03-30-2008
Splitting the line in multiple lines
Hi Guys,
I need a help. I am pretty new to the shell level programing. I was trying to split a long lines to a multiple lines with few conditions. I goggle for the code and found some snippets and tried to modified it but I got few strange problems too.
I have to split the lines if line is longer than 120 characters, then I have to separate it by adding "\" at the end of around 120th character. Note it can only separated at delimitation positions such as space or comma. And here is the code for that
#!/bin/sh
awk '{
if ( length($0) > 120 )
{
str=$0 ;
i=0 ;
while(length(str) > 120)
{
j=0;
for (m=1; m<=120;m++)
{
letter=substr($0,i+m,1);
#printf("%s\n",letter);
if( letter !=",")
then
else
{
j=m;
# printf("%s\n",substr($0,i+1,j) );
} fi
if( letter !=" ")
then
else
{ j=m;}
fi
}
printf("%s/\n",substr($0,i+1,j) );
i+=j ;
str=substr($0,i,length($0) );
}
if( length(str) > 1 )
printf("%s\n", substr(str,2,length(str))) ;
}
else
{
print $0
}
}' myfile.txt
But my problem was that above condition is working if put in posted order. If I used to work with equal to and put the expression after then it is not working properly.
I was also not able to use the OR expression for comma and space
I also need the program which can revert the same operation. I also read few tutorial about sed but found its quite confusing for new users
![Confused Smilie](https://www.unix.com/images/smilies/confused.gif)
![Confused Smilie](https://www.unix.com/images/smilies/confused.gif)
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I have a case where, I need to look into a file.
Go to each line of the file, find the length of the line, if the length of the line is more than 75 chars, I need to split the line into multiple lines of 75chars max. If the length of the line is less than 75, we need not do anything.
So at the... (4 Replies)
Discussion started by: thanuman
4 Replies
2. Shell Programming and Scripting
Hi all
I have a file with these lines
good
gone
home
What code do you need to put this on one line like this
good gone home (2 Replies)
Discussion started by: hawaiifiver
2 Replies
3. Shell Programming and Scripting
Hi,
I've some files with the following data and i need to convert the lines between the separator ---, into a single line. I've tried with the paste cmd but my main problem is that the number of lines between the separator is not fix, it can very between 1-4 lines.
Input
---
2010-02-22... (4 Replies)
Discussion started by: RickyC9999
4 Replies
4. Shell Programming and Scripting
Hi,
I have a huge file with a single line.
But I want to break that line into lines of with each line having five columns.
My file is like this:
code:
"hi","there","how","are","you?","It","was","great","working","with","you.","hope","to","work","you."
I want it like this:
code:... (1 Reply)
Discussion started by: rajsharma
1 Replies
5. Shell Programming and Scripting
example:
comment Now_TB.table column errac is for error messages
1 - first
2 - second
3 -third ;
in this example I need to be able to grab the comment as first word and ; as the last word and it might span a few lines. I need it to be put all in one line without line breaks so I can... (4 Replies)
Discussion started by: wambli
4 Replies
6. Shell Programming and Scripting
Hi guys,
So i have a input file with several sequences aligned (fasta)
>NC_005930 241 bp
MNMINIFIINNIFDQFIPVKLSIFSLTSVGSIIA
LSWVWINTKTHWAISRSNTP-SLLLNSL
WTLLITNL-NEKTNPWAPWLFSLFLLCFSFNIMSLI-PYTF-SQ
TSHLSFTFGLSLPIWIMVNIAGFKNNWKKKISHLLPQGTPIYLVPVMII
IETISLFIQPLTLGFRLGANLLAGHLLIFLCSCTIWE... (6 Replies)
Discussion started by: andreia
6 Replies
7. Shell Programming and Scripting
Hi All,
I am reading a line from a file and writing it to other file.
Whenever I got a particular line then I want that line to be splited into 4 line and written it to new file. e.g My line is
U_ABC connector3 pin24E connector4 pin25E connector5 pin26E connector6 pin27E connector7... (2 Replies)
Discussion started by: diehard
2 Replies
8. Shell Programming and Scripting
Hi,
I have one problem scenorio as below.
my source file is :
cat input_file.
"hi","there","how","are","you?","It","was","great","working","with","you.","hope","to","work","y ou."
my output should be like.
"hi","there","how","are","you?",
"It","was","great","working","with",... (7 Replies)
Discussion started by: abhilash_nakka
7 Replies
9. Shell Programming and Scripting
Hi All,
I have more than half million lines of XML file , wanted to split in four files in a such a way that top 7 lines should be present in each file on top and bottom line of should be present in each file at bottom.
from the 8th line actual record starts and each record contains 15 lines... (14 Replies)
Discussion started by: ajju
14 Replies
10. UNIX for Beginners Questions & Answers
I have code as below
# create temporary table `temp4277`(key(waybill_no))
select waybill_no,concat_ws('',card_type,card_series_no) cardinfo
from rfid_temp_ticket where waybill_no='4277'
group by... (4 Replies)
Discussion started by: kaushik02018
4 Replies
LEARN ABOUT OPENSOLARIS
fmt
fmt(1) User Commands fmt(1)
NAME
fmt - simple text formatters
SYNOPSIS
fmt [-cs] [-w width | -width] [inputfile]...
DESCRIPTION
fmt is a simple text formatter that fills and joins lines to produce output lines of (up to) the number of characters specified in the -w
width option. The default width is 72. fmt concatenates the inputfiles listed as arguments. If none are given, fmt formats text from the
standard input.
Blank lines are preserved in the output, as is the spacing between words. fmt does not fill nor split lines beginning with a `.' (dot), for
compatibility with nroff(1). Nor does it fill or split a set of contiguous non-blank lines which is determined to be a mail header, the
first line of which must begin with "From".
Indentation is preserved in the output, and input lines with differing indentation are not joined (unless -c is used).
fmt can also be used as an in-line text filter for vi(1). The vi command:
!}fmt
reformats the text between the cursor location and the end of the paragraph.
OPTIONS
-c Crown margin mode. Preserve the indentation of the first two lines within a paragraph, and align the left margin of
each subsequent line with that of the second line. This is useful for tagged paragraphs.
-s Split lines only. Do not join short lines to form longer ones. This prevents sample lines of code, and other such for-
matted text, from being unduly combined.
-w width | -width Fill output lines to up to width columns.
OPERANDS
inputfile Input file.
ENVIRONMENT VARIABLES
See environ(5) for a description of the LC_CTYPE environment variable that affects the execution of fmt.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
SEE ALSO
nroff(1), vi(1), attributes(5), environ(5)
NOTES
The -width option is acceptable for BSD compatibility, but it may go away in future releases.
SunOS 5.11 9 May 1997 fmt(1)