Print two lines to one


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Print two lines to one
# 1  
Old 03-17-2010
Print two lines to one

hi input file

Code:
string string
2
string string
3

how to print two lines (line and line bellow) to one line

I know there is command, and works fine
Code:
awk '{printf $0 ";"; getline; print $0}' $FILE

but I am experimenting with awk and tried this solutions, neither one works, could anybody explain why ? or how to modify script to work ? thanks

Code:
#1st

{
   if ($2 != null) {var="$0";}
   else {print $var $1;}
}


#2nd
BEGIN {regex="[0-9].*"}
{
   if ($1 !~ $regex) {var="$0";}
   else {print $var $1;}

}


#3rd
BEGIN {regex="[0-9].*"}
{
   if ($1 !~ $regex) {var="$0";}
   if ($1 ~ $regex) {print $var $1;}

}
getline

# 2  
Old 03-17-2010
Code:
awk 'ORS=(FNR%2)?FS:RS' myFile

# 3  
Old 03-17-2010
vgersh99: Interesting solution Smilie I know there are many but what is wrong about first ? Logicaly is correct to me
# 4  
Old 03-17-2010
Quote:
Originally Posted by wakatana
vgersh99: Interesting solution Smilie I know there are many but what is wrong about first ? Logicaly is correct to me
logically it might be right (depends on what is considered 'logical' of course, but in reality it's not correct.

In general, awk != perl

Now in detail:
Code:
{
   if ($2 != null) {var="$0";}
   else {print $var $1;}
}

  1. what is null? awk assumes a name of a variable. if so where is it defined?
  2. var="$0" - assigns a variable 'var' a value of a STRING "$0" - I bet not what you've wanted.
  3. print $var $1 - print a field NUMBER specified in a variable 'var' followed by the FIRST field.
# 5  
Old 03-17-2010
Shouldn't it be: -

Code:
awk 'ORS=(FNR%2)?FS:RS' FS=";" myfile

To get the desired output: -

Code:
string string;2
string string;3

# 6  
Old 03-17-2010
Quote:
Originally Posted by steadyonabix
Shouldn't it be: -

Code:
awk 'ORS=(FNR%2)?FS:RS' FS=";" myfile

To get the desired output: -

Code:
string string;2
string string;3

OP didn't specify this as a desired output.

Edit: actually you're right, but it was not explicitly specified - good catch!
# 7  
Old 03-17-2010
The desired op can be obtained by running: -

Code:
awk '{printf $0 ";"; getline; print $0}' $FILE

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to print lines from a files with specific start and end patterns and pick only the last lines?

Hi, I need to print lines which are matching with start pattern "SELECT" and END PATTERN ";" and only select the last "select" statement including the ";" . I have attached sample input file and the desired input should be as: INPUT FORMAT: SELECT ABCD, DEFGH, DFGHJ, JKLMN, AXCVB,... (5 Replies)
Discussion started by: nani2019
5 Replies

2. UNIX for Beginners Questions & Answers

Print number of lines for files in directory, also print number of unique lines

I have a directory of files, I can show the number of lines in each file and order them from lowest to highest with: wc -l *|sort 15263 Image.txt 16401 reference.txt 40459 richtexteditor.txt How can I also print the number of unique lines in each file? 15263 1401 Image.txt 16401... (15 Replies)
Discussion started by: spacegoose
15 Replies

3. UNIX for Dummies Questions & Answers

awk - (URGENT!) Print lines sort and move lines if match found

URGENT HELP IS NEEDED!! I am looking to move matching lines (01 - 07) from File1 and 77 tab the matching string from File2, to File3.txt. I am almost done but - Currently, script is not printing lines to File3.txt in order. - Also the matching lines are not moving out of File1.txt ... (1 Reply)
Discussion started by: High-T
1 Replies

4. Shell Programming and Scripting

Print n lines from top and n lines from bottom of all files with .log extenstion

Oracle Linux 6.4 In a directory I have more than 300 files with the extension .log I want the first 5 and last 5 lines of these .log files to be printed on screen with each file's name. Expected output : Printing first 5 and last 5 lines of FX_WT_Feb8_2014.log !! Authentication... (7 Replies)
Discussion started by: kraljic
7 Replies

5. Shell Programming and Scripting

Use sed to print first n lines and last n lines of an output.

Use sed to print first n lines and last n lines of an output. For example: n=10 Can it be done? Thanks. (7 Replies)
Discussion started by: carloszhang
7 Replies

6. Shell Programming and Scripting

sed print all lines between second and third identical lines

I am trying to extract a table of data (mysql query output) from a log file. I need to print everything below the header and not past the end of the table. I have spent many hours searching with little progress. I am matching the regexp +-\{99\} with no problem. I just can't figure out how to print... (5 Replies)
Discussion started by: godfreydanials
5 Replies

7. Shell Programming and Scripting

Print lines between two lines after grep for a text string

I have several very large file that are extracts from Oracle tables. These files are formatted in XML type syntax with multiple entries like: <ROW> some information more information </ROW> I want to grep for some words, then print all lines between <ROW> AND </ROW>. Can this be done with AWK?... (7 Replies)
Discussion started by: jbruce
7 Replies

8. Shell Programming and Scripting

print first few lines, then apply regex on a specific column to print results.

abc.dat tty cpu tin tout us sy wt id 0 0 7 3 19 71 extended device statistics r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device 0.0 133.2 0.0 682.9 0.0 1.0 0.0 7.2 0 79 c1t0d0 0.2 180.4 0.1 5471.2 3.0 2.8 16.4 15.6 15 52 aaaaaa1-xx I want to skip first 5 line... (4 Replies)
Discussion started by: kchinnam
4 Replies

9. Shell Programming and Scripting

print lines AFTER lines cointaining a regexp (or print every first and fourth line)

Hi all, This should be very easy but I can't figure it out... I have a file that looks like this: @SRR057408.1 FW8Y5CK02R652T length=34 AGCAGTGGTATCAACGCAGAGTAAGCAGTGGTAT +SRR057408.1 FW8Y5CK02R652T length=34 FIIHFF6666?=:88@@@BBD:::?@ABBAAA>8 @SRR057408.2 FW8Y5CK02TBMHV length=52... (1 Reply)
Discussion started by: kmkocot
1 Replies

10. Shell Programming and Scripting

AIX equivalent to GNU grep's -B and -A [print lines after or before matching lines]

Hi folks I am not allowed to install GNU grep on AIX. Here my code excerpt: grep_fatal () { /usr/sfw/bin/gegrep -B4 -A2 "FATAL|QUEUE|SIGHUP" } Howto the same on AIX based machine? from manual GNU grep ‘--after-context=num’ Print num lines of trailing context after... (4 Replies)
Discussion started by: slashdotweenie
4 Replies
Login or Register to Ask a Question