Sponsored Content
Top Forums Shell Programming and Scripting Combining many lines to one using awk or any unix cmd Post 302313868 by vgersh99 on Wednesday 6th of May 2009 06:03:45 PM
Old 05-06-2009
make sure your fields have no 'leading' and/or 'trailing spaces.
Otherwise:
Code:
BEGIN {
  FS=OFS=","
  SEP=" "
}
function trim(str)
{
    sub("^[ ]*", "", str);
    sub("[ ]*$", "", str);
    return str;
}

{
  idx=trim($1) OFS trim($2)
  idxA[idx]
  for(i=3; i<=NF; i++) {
    n=split(cols[idx, i], tmp, OFS)
    if (n==0)
       cols[idx,i]=trim($i)
    else {
      for(j=1; j<=n; j++)
        if (tmp[j]==trim($i)) break
      if (j>n) cols[idx,i]=cols[idx,i] SEP trim($i)
    }
  }
  nf=NF
}
END {
  for(i in idxA) {
    printf("%s%c", i, OFS)
    for(j=3; j<=nf; j++)
      printf("%s%c", cols[i,j], (j==nf)?RS:OFS)
  }
}

 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

get only a few lines from a unix cmd

I'd like to get only the first 5 lines of the ls -lt command, i tried to pass to head as a file ip but didnt work, is there any other way to do it. I am trying to find the lates log files for the last 5 days. what i tried head -5 < ls -lt alog* Thanks. -d (1 Reply)
Discussion started by: dharma
1 Replies

2. Shell Programming and Scripting

need help appending lines/combining lines within a file...

Is there a way to combine two lines onto a single line...append the following line onto the previous line? I have the following file that contains some blank lines and some lines I would like to append to the previous line... current file: checking dsk c19t2d6 checking dsk c19t2d7 ... (2 Replies)
Discussion started by: mr_manny
2 Replies

3. Shell Programming and Scripting

help combining lines in awk

I seem to have gotten myself in over my head on this one. I need help combining lines together. I have a text file containing 24,000 lines (exactly why I need awk) due to bad formatting it has separated the lines (ideally it should be 12,000 lines total). Example of file: ... (2 Replies)
Discussion started by: blueheed
2 Replies

4. Shell Programming and Scripting

combining unix commands and awk program

Dear Experts I am trying to find if it is possible to combine unix commands in awk program. For example if it is possible embed rm or ls or any unix command inside the awk program and while it is reading the file besides printing be able to do some unix commands. I am thinking may be just print... (2 Replies)
Discussion started by: Reza Nazarian
2 Replies

5. Shell Programming and Scripting

combining lines between 2 pattern using awk

Hi I am fairly new to shell scripting i have some file with outout 1011 abc fyi 6.1.4.5 abr tio 70986 dfb hji 4.1.7 ....some text 111114 i have to format this text to 1011 abc fyi 6.1.4.5 abr tio 70986 dfb hji 4.1.7 ....some text 111114 (3 Replies)
Discussion started by: shell.scriptor
3 Replies

6. Shell Programming and Scripting

searching thru or combining multiple lines in a unix file

This is the problem actually: This regex: egrep "low debug.*\".*\"" $dbDir/alarmNotification.log is looking for data between the two quotation marks: ".*\" When I hate data like this: low debug 2009/3/9 8:30:20.47 ICSNotificationAlarm Prodics01ics0003 IC... (0 Replies)
Discussion started by: ndedhia1
0 Replies

7. Shell Programming and Scripting

Unix cmd prompt how to get old cmd run?

Hi, I am using SunOS I want to serch my previous command from unix prompt (like on AIX we can search by ESC -k) how to get in SunOs urgent help require. (10 Replies)
Discussion started by: RahulJoshi
10 Replies

8. Shell Programming and Scripting

awk and combining lines to stdout

I am trying to come up with a good approach to taking a file and only printing 10 columns. The input file has duplicate lines but only the 6th column has real value. I just need to combine the lines and output 1 line per example file: 1 2.0765 AA 10 0.6557 ..... 1 2.0765 AA 10 0.6655 ..... 2... (12 Replies)
Discussion started by: mykey242
12 Replies

9. Shell Programming and Scripting

Reading two lines in a while loop and combining the lines

Dear all, I have a file like this: imput scaffold_0 1 scaffold_0 10000 scaffold_0 20000 scaffold_0 25000 scaffold_1 1 scaffold_1 10000 scaffold_1 20000 scaffold_1 23283 and I want the output like this: scaffold_0 1 scaffold_0 10000 scaffold_0 10000 scaffold_0 20000... (6 Replies)
Discussion started by: valente
6 Replies

10. Shell Programming and Scripting

Combining two lines into one, UNIX

Hi All, I have a file which has the following sample lines -- <Member name="Canada" Currency="CAD" -- <Member name="UK" Currency="GBP" -- <Member name="Switzerland" Currency="CHF" -- <Member name="Germany" Currency="EUR" -- (11 Replies)
Discussion started by: dev.devil.1983
11 Replies
textutil::trim(n)				    Text and string utilities, macro processing 				 textutil::trim(n)

__________________________________________________________________________________________________________________________________________________

NAME
textutil::trim - Procedures to trim strings SYNOPSIS
package require Tcl 8.2 package require textutil::trim ?0.7? ::textutil::trim::trim string ?regexp? ::textutil::trim::trimleft string ?regexp? ::textutil::trim::trimright string ?regexp? ::textutil::trim::trimPrefix string prefix ::textutil::trim::trimEmptyHeading string _________________________________________________________________ DESCRIPTION
The package textutil::trim provides commands that trim strings using arbitrary regular expressions. The complete set of procedures is described below. ::textutil::trim::trim string ?regexp? Remove in string any leading and trailing substring according to the regular expression regexp and return the result as a new string. This is done for all lines in the string, that is any substring between 2 newline chars, or between the beginning of the string and a newline, or between a newline and the end of the string, or, if the string contain no newline, between the beginning and the end of the string. The regular expression regexp defaults to "[ \t]+". ::textutil::trim::trimleft string ?regexp? Remove in string any leading substring according to the regular expression regexp and return the result as a new string. This apply on any line in the string, that is any substring between 2 newline chars, or between the beginning of the string and a newline, or between a newline and the end of the string, or, if the string contain no newline, between the beginning and the end of the string. The regular expression regexp defaults to "[ \t]+". ::textutil::trim::trimright string ?regexp? Remove in string any trailing substring according to the regular expression regexp and return the result as a new string. This apply on any line in the string, that is any substring between 2 newline chars, or between the beginning of the string and a newline, or between a newline and the end of the string, or, if the string contain no newline, between the beginning and the end of the string. The regular expression regexp defaults to "[ \t]+". ::textutil::trim::trimPrefix string prefix Removes the prefix from the beginning of string and returns the result. The string is left unchanged if it doesn't have prefix at its beginning. ::textutil::trim::trimEmptyHeading string Looks for empty lines (including lines consisting of only whitespace) at the beginning of the string and removes it. The modified string is returned as the result of the command. BUGS, IDEAS, FEEDBACK This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category textutil of the Tcllib SF Trackers [http://sourceforge.net/tracker/?group_id=12883]. Please also report any ideas for enhancements you may have for either package and/or documentation. SEE ALSO
regexp(n), split(n), string(n) KEYWORDS
prefix, regular expression, string, trimming CATEGORY
Text processing textutil 0.7 textutil::trim(n)
All times are GMT -4. The time now is 11:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy