Moving line above possible? after pattern match?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Moving line above possible? after pattern match?
# 1  
Old 09-19-2014
Moving line above possible? after pattern match?

Team,
would like to know if it is possibe to move line above.after TEST pattern match

Code:
#cat file1
data1
data2
ok
Test

data1
ok
Test

data2
Test


Output:
Test
data1
data2
ok

Test
data1
ok

Test
data2


Last edited by vbe; 09-19-2014 at 02:20 PM.. Reason: code tags please -not- icode
# 2  
Old 09-19-2014
Hello kenshinhimura,

Following may help you in same.

Code:
awk '!/Test/ {a=0;V=V?V ORS $0:$0} /Test/ {a=1; V="Test" ORS V;print V ORS;V=a=""}' Input_file

Output will be as follows.
Code:
Test
data1
data2
ok
 
Test
data1
ok
 
Test
data2

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 3  
Old 09-19-2014
Hi sing, sorry, its working fine, but Test has another data in it

example

Test blah blah
# 4  
Old 09-19-2014
Hello kenshinhimura,

Kindly try the following it may help.

Code:
awk '!/Test/ {a=0;V=V?V ORS $0:$0} /Test/ {a=1; V=$0 ORS V;print V ORS;V=a=""}' Input_file

Thanks,
R. Singh

Last edited by RavinderSingh13; 09-19-2014 at 02:42 PM..
This User Gave Thanks to RavinderSingh13 For This Post:
# 5  
Old 09-19-2014
Sir Singh, thank you
This User Gave Thanks to kenshinhimura For This Post:
# 6  
Old 09-19-2014
Try:
Code:
awk '{p=$NF; $NF=x; print p,$0}' RS= FS='\n' OFS='\n' file

This User Gave Thanks to Scrutinizer For This Post:
# 7  
Old 09-19-2014
i made a script on my own., and i run it to all of my servers to get the hostname, please look at file2. Then i need some data in file3 as well,. i need to combine them

Code:
# cat file2

192.10.1.41
server.age.com
######

192.10.0.40
ssh cant connect
######

192.1.1.49 
server2.age.com
##########


#cat file 3
data3 192.10.1.41 stop 
data2 192.10.0.40 running
data1 192.1.1.49 idle      max




Output:
192.10.1.41  server.age.com  data3 stop
192.10.0.40  		     data2 running
192.1.1.49   server2.age.com data1 idle

---------- Post updated at 02:53 PM ---------- Previous update was at 02:51 PM ----------

Quote:
Originally Posted by Scrutinizer
Try:
Code:
awk '{p=$NF; $NF=x; print p,$0}' RS= FS='\n' OFS='\n' file

thank you..i tried that.much simpler...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to combine lines from line with pattern match to a line that ends in a pattern

I am trying to combine lines with these conditions: 1. First line starts with text of "libname VALUE db2 datasrc" where VALUE can be any text. 2. If condition1 is met then continue to combine lines through a line that ends with a semicolon. 3. Ignore case when matching patterns and remove any... (5 Replies)
Discussion started by: Wes Kem
5 Replies

2. Shell Programming and Scripting

Match Pattern and print pattern and multiple lines into one line

Hello Experts , require help . See below output: File inputs ------------------------------------------ Server Host = mike id rl images allocated last updated density vimages expiration last read <------- STATUS ------->... (4 Replies)
Discussion started by: tigerhills
4 Replies

3. Shell Programming and Scripting

Rearrange or replace only the second line after pattern match or pattern match

Im using the command below , but thats not the output that i want. it only prints the odd and even numbers. awk '{if(NR%2){print $0 > "1"}else{print $0 > "2"}}' Im hoping for something like this file1: Text hi this is just a test text1 text2 text3 text4 text5 text6 Text hi... (2 Replies)
Discussion started by: invinzin21
2 Replies

4. Shell Programming and Scripting

Sed: how to merge two lines moving matched pattern to end of previous line

hello everyone, im new here, and also programming with awk, sed and grep commands on linux. In my text i have many lines with this config: 1 1 4 3 1 1 2 5 2 2 1 1 1 3 1 2 1 3 1 1 1 2 2 2 5 2 4 1 3 2 1 1 4 1 2 1 1 1 3 2 1 1 5 4 1 3 1 1... (3 Replies)
Discussion started by: satir
3 Replies

5. Shell Programming and Scripting

Print only next pattern in a line after a pattern match

I have 2013-06-11 23:55:14 1Umexd-0004cm-IG <= user@domain.com I need sed/awk operation on this, so that it should print the very next pattern only after the the pattern mach <= ie only print user@domain.com (7 Replies)
Discussion started by: anil510
7 Replies

6. Shell Programming and Scripting

I need to know how to replace a line after a pattern match with an empty line using SED

Hi How Are you? I am doing fine! I need to go now? I will see you tomorrow! Basically I need to replace the entire line containing "doing" with a blank line: I need to the following output: Hi How Are you? I need to go now? I will see you tomorrow! Thanks in advance.... (1 Reply)
Discussion started by: sags007_99
1 Replies

7. Shell Programming and Scripting

pattern match and replace another pattern in same line

I have a pattern username:x:32005:32006::/usr/local/user:/bin/bash I need to match the line containing username and replace /bin/bash with /usr/local/my/bin/noshell So it becomes username:x:32005:32006::/usr/local/user:/usr/local/my/bin/noshell (7 Replies)
Discussion started by: anilcliff
7 Replies

8. Shell Programming and Scripting

Print Line if next line Match a pattern

Hi All, Does anyone know how to print 1H1A....... in peal script print line ^1H1A....... if next line equal 5R0RECEIPT.... Thank for help:D Cat st.txt 1H1A-IN-11-5410-0009420|1010047766|dsds|1|N|IN|IN|000000|1||N|<<<line match 5R0RECEIPT| 5R0RECEIPT|... (2 Replies)
Discussion started by: kittiwas
2 Replies

9. UNIX for Dummies Questions & Answers

MATCH A PATTERN AND PRINT A LINE ABOVE AND BELOW

Dear All, Hv a very specific requirement. I have a very large text file and in which I have to match a pattern and insert a line above and below. Eg: My file cat test date1 date2 date3 date4 I need to match 'date3' and insert "Reminder1" above date3 and insert 'reminder2'... (4 Replies)
Discussion started by: gokulj
4 Replies

10. Shell Programming and Scripting

sed - Replace Line which contains the Pattern match with a new line

I need to replace the line containing "STAGE_DB" with the line "STAGE_DB $DB # database that contains the table being loaded ($workingDB)" Here $DB is passed during the runtime. How can I do this? Thanks, Kousikan (2 Replies)
Discussion started by: kousikan
2 Replies
Login or Register to Ask a Question