如何在bash中将空格替换为新行
我有一个文本文件,其中包含许多由空格分隔的单词(字符串)。如何用换行符替换空格。换句话说,如何使每个字符串位于如何在bash中将空格替换为新行,bash,sed,Bash,Sed,我有一个文本文件,其中包含许多由空格分隔的单词(字符串)。如何用换行符替换空格。换句话说,如何使每个字符串位于bash中的不同行上?如果您能建议使用sed的方法,我将不胜感激 使用命令: sed -i.bak -e 's/\s\+/\n/g' file \s将匹配任何空白字符(空格、制表符、换行符),并且\+将匹配一行中的一个或多个匹配项-i.bak会将原始文件备份到file.bak文件bla: a b c d e 使用sed: sed 's/\s\+/\n/g' bla 结果: a
bash
中的不同行上?如果您能建议使用sed
的方法,我将不胜感激 使用命令:
sed -i.bak -e 's/\s\+/\n/g' file
\s
将匹配任何空白字符(空格、制表符、换行符),并且\+
将匹配一行中的一个或多个匹配项-i.bak
会将原始文件备份到file.bak
文件bla:
a b c d e
使用sed:
sed 's/\s\+/\n/g' bla
结果:
a
b
c
d
e
在Gnu awk(和mawk)中:
对单行使用tr
:
$ tr -s \ '\n' <<< "a b c"
a
b
c
$tr-s\'\n'还有几种方法:
$ 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
如果Perl是一个选项:
echo "a b c d e" | perl -pe 's/\s+/\n/g'
杰克狠狠地揍了我一顿,所以接受他的回答。请注意,我写它的方式将其输出到终端,而他的方法更改了文件本身(使用bak)。谢谢你,卡巴纳斯,你的方法也非常好,非常有用。谢谢你,杰克,这非常有用,特别是知道如何从原始文件中获取备份。你为什么不接受他的解决方案?左边的V。谢谢你,詹姆斯,很抱歉重复了这些问题,我用谷歌搜索了我的问题,但另一个问题是用新线取代昏迷,谷歌无法帮我找到上一篇文章。我真的很好奇你的建议是用awk。我从来没有想到过解决这个问题的awk。
$ xargs -n1 < ip.txt
foo
bar
baz
a
433
5er
cat
fog
try
$ grep -o '[^ ]*' ip.txt
foo
bar
baz
a
433
5er
cat
fog
try
echo "a b c d e" | perl -pe 's/\s+/\n/g'