Skip to contentSkip to conversation

Text Reformatting

DISCUSSION Peter 4 participants 6 messages May 18, 2003 – May 20, 2003

lore
Share & tools
lore

Peter

author
#0 lore raw

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
#1 lore raw
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
#2 lore raw
In reply to Peter

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

#3 lore raw
In reply to Peter
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
author
#4 lore raw

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
#5 lore raw
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