如何在bash中将空格替换为新行

时间:2016-10-21 13:41:06

标签: bash sed

我的文本文件包含许多以空格分隔的单词(字符串)。如何用换行符替换空格。换句话说,如何将每个字符串放在sed的不同行?如果还可以使用*.rs建议一种方法,我将非常感激!

5 个答案:

答案 0 :(得分:2)

使用命令:

sed -i.bak -e 's/\s\+/\n/g' file

\s将匹配任何空白字符(空格,制表符,换行符),\+将匹配一行中的一个或多个匹配项。 -i.bak会将原始文件备份到file.bak

答案 1 :(得分:2)

文件bla:

a b    c d e

使用sed:

sed 's/\s\+/\n/g' bla

结果:

a
b
c
d
e

答案 2 :(得分:1)

$ cat foo
a b  c
1   2 3

在Gnu awk(和mawk):

$ awk -v RS=" +|\n"  '{print $0}' foo
a
b
c
1
2
3

tr用于一行:

$ tr -s \  '\n' <<< "a b  c"
a
b
c

答案 3 :(得分:0)

更多方法:

$ cat ip.txt 
foo bar   baz
a    433 5er
cat  fog try


使用xargs

$ xargs -n1 < ip.txt 
foo
bar
baz
a
433
5er
cat
fog
try


使用grep

$ grep -o '[^ ]*' ip.txt 
foo
bar
baz
a
433
5er
cat
fog
try

答案 4 :(得分:0)

如果Perl是一个选项:

echo "a b    c d e" | perl -pe 's/\s+/\n/g'