Conditional concat lines awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Conditional concat lines awk
# 1  
Old 10-15-2008
Conditional concat lines awk

Hello,
I have a text file like this:
NONE FILE_Rename
frompath: /log_audit/AIX/log/current/AIXAFTPP.log
NONE FILE_Unlink
filename /audit/tempfile.14041142
NONE FILE_Rename
NONE FILE_Rename
filename /log_audit/AIX/log/last/S372008.log
I would like to obtain a output text file using awk script:
1) If i have two lines like this i would like to concatenate in one.
NONE FILE_Rename
frompath: /log_audit/AIX/log/current/AIXAFTPP.log
2) If i have two lines like this i don't want to concatenate.
NONE FILE_Rename
NONE FILE_Rename

Thanks a lot. Smilie
# 2  
Old 10-15-2008
Try:
Code:
awk 'END{print RS}$0=(/^NONE/?NR==1?_:RS:FS)$0' ORS= file

If you get no output, try this:

Code:
awk 'END{print RS}$0=(/^NONE/?NR==1?_:RS:FS)$0;1' ORS= file

# 3  
Old 10-15-2008
Or just something like this?

Code:
awk '/^NONE FILE/{s=$0;next}{print s " "$0}' file

Regards
# 4  
Old 10-15-2008
Code:
% cat file
NONE FILE_Rename
frompath: /log_audit/AIX/log/current/AIXAFTPP.log
NONE FILE_Unlink
filename /audit/tempfile.14041142
NONE FILE_Rename
NONE FILE_Rename
filename /log_audit/AIX/log/last/S372008.log


% awk '/^NONE FILE/{s=$0;next}{print s " "$0}' file        
NONE FILE_Rename frompath: /log_audit/AIX/log/current/AIXAFTPP.log
NONE FILE_Unlink filename /audit/tempfile.14041142
NONE FILE_Rename filename /log_audit/AIX/log/last/S372008.log


% awk 'END{print RS}$0=(/^NONE/?NR==1?_:RS:FS)$0' ORS= file
NONE FILE_Rename frompath: /log_audit/AIX/log/current/AIXAFTPP.log
NONE FILE_Unlink filename /audit/tempfile.14041142
NONE FILE_Rename
NONE FILE_Rename filename /log_audit/AIX/log/last/S372008.log

# 5  
Old 10-15-2008
Quote:
Originally Posted by radoulov
Code:
% awk 'END{print RS}$0=(/^NONE/?NR==1?_:RS:FS)$0' ORS= file
NONE FILE_Rename frompath: /log_audit/AIX/log/current/AIXAFTPP.log
NONE FILE_Unlink filename /audit/tempfile.14041142
NONE FILE_Rename
NONE FILE_Rename filename /log_audit/AIX/log/last/S372008.log

Yes, I know, but it's not really clear to me what the OP expect.Smilie

Regards
# 6  
Old 10-15-2008
Quote:
Originally Posted by Franklin52
Yes, I know, but it's not really clear to me what the OP expect.Smilie

Regards
Waiting for the OP to clarify ... Smilie

Perl addition: if the file is not too big SmilieSmilieSmilie

Code:
perl -p0e's/\n(?!(^NONE|\Z))/ /mg' file


Last edited by radoulov; 10-15-2008 at 07:23 AM..
# 7  
Old 10-15-2008
sorry is not running

Also at the begin of the file i have a head text like:

host event login real process parent st
---------------- --------------- -------- -------- -------- --

I need to call the script like: script inputfile outputfile
Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Concat String with variable after a 'grep' and awk

Here is the structure of my file: MyFile.txt g-4.n.g.fr 10.147.243.63 g-4.n.g.fr-w1 Here is my sript: test.sh #! /bin/sh ip=10.147.243.63 worker=$(grep -e $ip $1 | awk '{ print $3; }') echo "" echo $worker echo "" echo $worker echo "" echo "$worker.v.1" echo... (7 Replies)
Discussion started by: chercheur111
7 Replies

2. UNIX for Dummies Questions & Answers

concat any two lines in a file

I have a file with line 4 : F SITE SPA_M2 SPA_M3 SPA_M4 and a line 237 with: BV_N4 VbdGO_PW Rs_NW_STI Rc_N+OD need a awk liner to concat the two lines so that line 2 sits next to line1 and looks like: F SITE SPA_M2 SPA_M3 SPA_M4 BV_N4 VbdGO_PW ... (8 Replies)
Discussion started by: awkaddict
8 Replies

3. Shell Programming and Scripting

awk if conditional, multiple lines

Hi experts, I have a file with hundreds of lines that looks something like this: Cake 1 3 4 2 3 1 3 Onion 3 2 4 1 3 4 2 Apple 2 3 4 4 1 2 1 Orange 4 3 4 1 2 4 1 Cake 3 1 4 2 4 2 1 Onion 2 4 2 1 4 2 1 Apple 4 3 3 3 3 2 1 Orange 2 1 2 2 2 4 1 Cake 4 3 4 3 1 3 3 ... I'm trying to... (2 Replies)
Discussion started by: david_seeds
2 Replies

4. Shell Programming and Scripting

awk concat lines between 2 sequent digits

I would like to print string between two sequent digits and concatenate it into one single line. input.txt 99 cord, rope, strand, twine, twist, 100 strand, twine, twist, cord, rope 101 strand, twine, twist, twine, twist, cord, rope 105 cord, rope ,twi ... (8 Replies)
Discussion started by: sdf
8 Replies

5. Shell Programming and Scripting

Need help in concat of two lines in a file

Hi , Need help in concating two lines based on certain character, for example my file has the messages : :57A:qweqweww :58A:qeqewqeqe -}$ {1:fffff2232323}{2:123123dasds}{4: :20:121323232323232 :21:sdsadasdasddadad if the line ends with "-}$" or if a line starts with "{1:" then it... (5 Replies)
Discussion started by: ulin
5 Replies

6. Shell Programming and Scripting

Awk Concat

Hi All this may be somewhere in internet , but couldnt find the it. i have file as abc01 2010-07-01 12:45:24 2010-07-01 12:54:35 abc02 2010-07-01 12:59:24 2010-07-01 01:05:13 abc03 . . . the output using awk should look like this abc01|2010-07-01 12:45:24|2010-07-01 12:54:35... (3 Replies)
Discussion started by: posner
3 Replies

7. Shell Programming and Scripting

How to concat lines that have the same key field

Hi, I have file like this - ABC 123 ABC 456 ABC 321 CDE 789 CDE 345 FGH 111 FGH 222 FGH 333 XYZ 678 I need the output like this: ABC 123,456 CDE 789,345 FGH 111, 222 XYZ 678 Meaning I want to concat the lines that have the same first column, but I only need the first two... (10 Replies)
Discussion started by: redwing
10 Replies

8. Shell Programming and Scripting

concat 6 files in 1 file ( maybe use AWK?)

hi, I have the following problem: - 6 different files that have one key in common. - this six files must be aggregated in one output file sorted by the key. - the main file has to be writen twice, one in the beggining of the new output file and another in the end, for each key. - add one... (3 Replies)
Discussion started by: naoseionome
3 Replies

9. Shell Programming and Scripting

Conditional merging of lines

I have a large file where some lines have been split into two lines; some of them even with white spaces before the second line. e.g in the following text I want to merge only specific lines ( say UNIX is cool), also removing white spaces only between them, others shall remain same on the output.... (4 Replies)
Discussion started by: sunny23
4 Replies

10. Shell Programming and Scripting

AWK - conditional cause

Hello guys, I want to make a conditional cause in the following file using awk: awk '{ if ($2 != 0) print $1, $2, $3}' test.csv > test2.csv FILE EXAMPLE = test.csv string,number,date abc,0,20050101 def,1,20060101 ghi,2,20040101 jkl,12,20090101 mno,123,20020101 ... (2 Replies)
Discussion started by: Rafael.Buria
2 Replies
Login or Register to Ask a Question