Omar Asim
Omar Asim

Reputation: 21

Linux command to copy file contents one word per line into a new file created from the same command

I need to copy the file contents one word per line into a new file created from the same command.

This is the file:

Never
gonna
give you up
Never
gonna
let you down
Never
gonna
turn around and desert you

Command already tried:

cat a6q4-input.txt >> a6q4-pt2.txt

This copies the file to newly created file a6q4-pt2.txt in exact format however does not changes the layout of the word content to one word per line.

Upvotes: 1

Views: 160

Answers (3)

Timur Shtatland
Timur Shtatland

Reputation: 12377

Use xargs:

cat in_file | xargs -n1 > out_file

Or use a Perl one-liner:

perl -lane 'print for @F' in_file > out_file

The Perl one-liner uses these command line flags:
-e : Tells Perl to look for code in-line, instead of in a file.
-n : Loop over the input one line at a time, assigning it to $_ by default.
-l : Strip the input line separator ("\n" on *NIX by default) before executing the code in-line, and append it when printing.
-a : Split $_ into array @F on whitespace or on the regex specified in -F option.

SEE ALSO:
perldoc perlrun: how to execute the Perl interpreter: command line switches

Upvotes: 0

Aplet123
Aplet123

Reputation: 35540

You can use tr to replace spaces with newlines:

tr ' ' '\n' < input.txt > output.txt

Upvotes: 1

Shawn
Shawn

Reputation: 52539

Perl one-liner:

perl -lne 'print for split' a6q4-input.txt > a6q4-pt2.txt

For each line of the files given on the command line (-n), split it up into words based on whitespace with split, and print each one on its own line with print. -l adds a newline after each print (And strips them from each line when read).

Upvotes: 1

Related Questions