Split a line into next line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split a line into next line
# 15  
Old 04-09-2014
Try :

Code:
$ awk -F\| 'NR==1 && NF>4{$0 = substr($0,1,33) RS substr($0,34)}1' file

# 16  
Old 04-10-2014
Split a line into next line

Hi Akshay,

thanks for your reploy.
Code:
awk -F\| 'NR==1 && NF>4{$0 = substr($0,1,33) RS substr($0,34)}1' bb

is not working .

as i told you my record are dynamic '1111' is not a fixed records.

like below..
Code:
emplid|empl_name|salary|hire_daten1111|gro|3000|01/01/2014
9867|ghgo|4000|01/03/2014
5342|dkguo|5000|02/01/2014
7452|ehrt|6000|01/04/2014
2937|kfgtr|8000|03/01/2014


Last edited by Scrutinizer; 04-10-2014 at 02:06 AM..
# 17  
Old 04-10-2014
First of all: what is not working? Please provide feedback, also with some of the other suggestions.

Also, your requirements are unclear. Both Akshay's version and my suggestion do not use the content of the first non-header record, but use the fixed length (you claim) of the header and only if there are more characters/fields after that fixed length. If that is not right, then what is the criterion?

And tell us your OS version, what your results are and what they should be instead and post any new requirements that you have with a representative sample..

Or this thread will need to be closed..

Last edited by Scrutinizer; 04-10-2014 at 02:26 AM..
# 18  
Old 04-10-2014
Hi Scrutinizer,

sorry for my unclear requirment.

Requirment:-emplid|empl_name|salary|hire_date is my file header and this is fixed length.
sometime, the first record might be attached to the end of the header line.
i have to check if first record is attached with end of the header record then split that record into next line.
note:- i have to check header only from the user input file.

As per your post, i tried i am getting below output.
Code:
FEEDS:/projects/feeds/rfs>sed '1s/./\
&/34' kk.txtWHAT?>&/34' kk.txt
emplid|empl_name|salary|hire_date
1111|gro|3000|01/01/2014
9867|ghgo|4000|01/03/2014
5342|dkguo|5000|02/01/2014
7452|ehrt|6000|01/04/2014
2937|kfgtr|8000|03/01/2014

i dont understand "WHAT?" in output.

my os is: HP-UX and k shell
i am the owner of this directory. also 755 permissions i have.

from Akshay's post i tried , it is not working if it is appened rather than "1111".

Thanks for you reply.
# 19  
Old 04-10-2014
The output is
Code:
emplid|empl_name|salary|hire_date
1111|gro|3000|01/01/2014
9867|ghgo|4000|01/03/2014
5342|dkguo|5000|02/01/2014
7452|ehrt|6000|01/04/2014
2937|kfgtr|8000|03/01/2014

WHAT?> is not part of the output, but rather a prompt by your shell ( the $PS2 prompt ) to ask for the next line after you enter a \ followed by enter.. So it is working as expected..

Try redirecting to a file and see for yourself


--
Akshay's solution is working too, just if you used "append" instead of the first record, then it will not work, not because the first non-header record does not contain 1111, but because Akshay's script is testing for extra pipe (|) separated fields as are present in your original sample..

Last edited by Scrutinizer; 04-10-2014 at 03:57 AM..
# 20  
Old 04-10-2014
you can try this if the header is fixed
Code:
# awk -vx="date" 'NR==1{split($0,a,x);print a[1] x RS a[2];next}1' yourfile
emplid|empl_name|salary|hire_date
1111|gro|3000|01/01/2014
1111|ghgo|4000|01/03/2014
1111|dkguo|5000|02/01/2014
1111|ehrt|6000|01/04/2014
1111|kfgtr|8000|03/01/2014

# 21  
Old 04-10-2014
Split a line into next line

Thanks all for you valuable informations i got my expected result.

thanks Scrutinizer/ygemici,

ygemici,

can you please explain brifly about you code.please

awk -vx="date" 'NR==1{split($0,a,x);print a[1] x RS a[2];next}1' bb
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Get an output of lines in pattern 1st line then 10th line then 11th line then 20th line and so on.

Input file: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (6 Replies)
Discussion started by: Sagar Singh
6 Replies

2. Shell Programming and Scripting

Split a line

I have a very long line in a file separated by "|" delimiter like below. Due to the length of the line, I find it very difficult to read to find a match line. file = temp.txt word 1| word 2 | word 3|.... I would like to read the file temp.txt and print out all words line by line like... (1 Reply)
Discussion started by: boldnbeautiful
1 Replies

3. UNIX for Dummies Questions & Answers

Split Every Line In Txt Into Separate Txt File, Named Same As The Line

Hi All Is there a way to export every line into new txt file where by the title of each txt output are same as the line ? I have this txt files containing names: Kandra Vanhooser Rhona Menefee Reynaldo Hutt Houston Rafferty Charmaine Lord Albertine Poucher Juana Maes Mitch Lobel... (2 Replies)
Discussion started by: Nexeu
2 Replies

4. Shell Programming and Scripting

Read a File line by line and split into array word by word

Hi All, Hope you guys had a wonderful weekend I have a scenario where in which I have to read a file line by line and check for few words before redirecting to a file I have searched the forum but,either those answers dint work (perhaps because of my wrong under standing of how IFS... (6 Replies)
Discussion started by: Kingcobra
6 Replies

5. Shell Programming and Scripting

how to read the contents of two files line by line and compare the line by line?

Hi All, I'm trying to figure out which are the trusted-ips and which are not using a script file.. I have a file named 'ip-list.txt' which contains some ip addresses and another file named 'trusted-ip-list.txt' which also contains some ip addresses. I want to read a line from... (4 Replies)
Discussion started by: mjavalkar
4 Replies

6. UNIX for Dummies Questions & Answers

Using Awk to split a line

Hi, I have a file that contains multiple lines e.g. /Plane/Wing/Engine/Rotorblades I cannot use print $4 as the directories will be different lengths. All i would like to do is print the very last column in each line in the file i.e. in this case, Rotorblades. The code i... (4 Replies)
Discussion started by: crunchie
4 Replies

7. Shell Programming and Scripting

Split a line

I guess this has a simple solution but can't figure out now. having: x="H:a:b:c" to get H: echo $x|awk -F: {'print $1'} how can I put REST of line in another one? i.e. echo $rest a:b:c thanks ---------- Post updated at 08:58 PM ---------- Previous update was at... (5 Replies)
Discussion started by: garagonp
5 Replies

8. Shell Programming and Scripting

split single line into two line or three lines

Dear All, I want to split single line into two line or three lines wherever “|” separated values comes using Input line test,DEMTEMPUT20100404010012,,,,,,,,|0070086|0070087, output shoule be test,DEMTEMPUT20100404010012,,,,,,,,0070086, test,DEMTEMPUT20100404010012,,,,,,,,0070087, (14 Replies)
Discussion started by: arvindng
14 Replies

9. Shell Programming and Scripting

Split a line on positions before reading complete line

Hi, I want to split before reading the complete line as the line is very big and its throwing out of memory. can you suggest. when i say #cat $inputFile | while read eachLine and use the eachLine to split its throwing out of memory as the line size is more than 10000000 characters. Can you... (1 Reply)
Discussion started by: vijaykrc
1 Replies

10. Shell Programming and Scripting

Split line before the pattern

Hi, I am trying to use awk to split line before the pattern: abcde 12345 67890 abcde 12345 67890 abcde 12345 67890 abcde 12345 67890 abcde 12345 67890 abcde 12345 67890 abcde 12345 67890 I need it to be like this: abcde 12345 67890 abcde 12345 67890 abcde 12345 67890 abcde... (7 Replies)
Discussion started by: djanu
7 Replies
Login or Register to Ask a Question