Text Reformatting
Hi,
Some text I download for printing are formatted like:
Because of the publicity the Iraqi government has given to the
issue, Iraqis worry about DU.
which adds more pages for printing.
How can I with some command, left align the text to read
Because of the publicity the Iraqi government has given to the issue, Iraqis worry about DU.
yet maintaining the paragraphs.
When looking at the text with a word processor they are all left aligned and can only be changed manually line by line.
I came up with the sausage
cat file.txt | tr -s " " "\012" > file1.txt | fmt -u -w 105 file1.txt > file2.txt
This does not maintain the paragraphs, however. Can sed do it and how?
Thanks & regards
Signature · 7 lines
Peter - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs
Quoted 6 lines · Peter
I came up with the sausage
cat file.txt | tr -s " " "\012" > file1.txt | fmt -u -w 105 file1.txt > file2.txt
This does not maintain the paragraphs, however. Can sed do it and how?
sed -e 's/^[ ]\+//' -e 's/[ ]\+$//' <file.txt | fmt -u -w 105 >file1.txt
I added the 2nd regexp just to make sure there was nothing there. Tab and a space inside the square brackets.
Signature · 11 lines
Martin's distress was in contrast to the bitter satisfaction of some of his fellow marines as they surveyed the scene. "The Iraqis are sick people and we are the chemotherapy," said Corporal Ryan Dupre. "I am starting to hate this country. Wait till I get hold of a friggin' Iraqi. No, I won't get hold of one. I'll just kill him." - http://www.informationclearinghouse.info/article2479.htm - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs
Hi,
Quoted 7 lines · Peter
Hi,
Some text I download for printing are formatted like:
Because of the publicity the Iraqi government has given to the
issue, Iraqis worry about DU.
Quoted 9 lines
which adds more pages for printing.
How can I with some command, left align the text to read
Because of the publicity the Iraqi government has given to the issue, Iraqis worry about DU.
yet maintaining the paragraphs.
I often cut and paste webpages into files and they are often munged as in the example you give.
My standard way of doing this is to use vi.
Open the file in vi and do:
Press <ESC> to ensure you are in command mode.
Then type:
:%s/^\s*//
<ENTER>
If you are happy with the result, type:
ZZ
to save the modified file
else type:
:q!
to quit without saving.
regards,
John Kelly
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
Quoted 18 lines · Peter
Hi,
Some text I download for printing are formatted like:
Because of the publicity the Iraqi government has given to the
issue, Iraqis worry about DU.which adds more pages for printing.
How can I with some command, left align the text to read
Because of the publicity the Iraqi government has given to the issue, Iraqis worry about DU.
yet maintaining the paragraphs.
When looking at the text with a word processor they are all left aligned and can only be changed manually line by line.
Quoted 7 lines
I came up with the sausage
cat file.txt | tr -s " " "\012" > file1.txt | fmt -u -w 105 file1.txt > file2.txt
This does not maintain the paragraphs, however. Can sed do it and how?
Thanks & regards
Mostly what you want to do is delete the leading spaces then reformat. As long as paragraphs are separated by blank lines, the following should work:
sed 's/^[ \t]+//' file | fmt -u -w105 > file2.txt
----------------------------------
Note that when you do the " tr [options] > somefile | fmt [options] somefile" , you're losing any advantage of using a pipe. The output for the tr file is redirected into somefile, and fmt is reading explicitly
from there. The pipe is essentially unused... Either :
tr [options] | fmt [options]
or:
tr [options] > somefile ; fmt [options] somefile
The main difference: The former properly uses pipes
The later simply acknowledges that the pipe really isn't being used.
Signature · 10 lines
Stephen Samuel +1(604)876-0426 [email protected] http://www.bcgreen.com/~samuel/ Powerful committed communication, reaching through fear, uncertainty and doubt to touch the jewel within each person and bring it to life. - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs
Thanks Stephen,
sed 's/^[ \t]+//' file does not work, it changes nothing.
Quoted 2 lines · [email protected] said:
Note that when you do the " tr [options] > somefile | fmt [options] somefile" , you're losing any advantage of using a pipe.
Well taken tip!
Regards
Signature · 7 lines
Peter - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs
Quoted 7 lines · Peter
Thanks Stephen,
sed 's/^[ \t]+//' file does not work, it changes nothing.
[email protected] said:
Quoted 7 lines
Quoted 2 lines
Note that when you do the " tr [options] > somefile | fmt [options] somefile" , you're losing any advantage of using a pipe.
Well taken tip!
Regards
Grr... I forgot the backslash before the '+' That should be:
sed 's/^[ \t]\+//' file
(you could also do
sed 's/^[ \t]*//' file
The '+' construct is (technically) a bit more efficient -- it won't do a null replacement for an unindented line. It is, however, an extended pattern and I sometimes worry about it's portability to older (non-gnu) versions of sed. Ha! but never mind! Even that \t turns out not to be portable to BSD. you need to have the literal 'tab' character. It turns out that the most portable form is:
sed 's/^[ ]*//' file
(with a space and a tabe between the sqquare brackets). You might need to do a ctrl-v o get bash to accept the tab caracter.
Signature · 10 lines
Stephen Samuel +1(604)876-0426 [email protected] http://www.bcgreen.com/~samuel/ Powerful committed communication, reaching through fear, uncertainty and doubt to touch the jewel within each person and bring it to life. - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs