Answers:
几种选择:
经典用法tr
:
tr ' ' '\n' < example
采用 cut
cut -d ' ' --output-delimiter=$'\n' -f 1- example
采用 sed
sed 's/ /\n/g' example
采用 perl
perl -pe 's/ /\n/g' example
使用外壳
foo=$(cat example); echo -e ${foo// /\\n}
sed
我需要添加一个$
以使bash替换为实际的换行符,即:sed $'s/ /\\\n/g' example
sed $'s/ /\\n/g'
试试下面的命令
awk -v RS=" " '{print}' file
要么
awk -v RS='[\n ]' '{print}' file
例:
$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
说明:
RS(记录分隔符)是内置的awk变量。在第一个命令中,给Record分隔符变量的值是空格。因此,awk会在发现空间时中断打印行。
在第二个命令中,给RS变量的值是空格或换行符。此命令消除了运行第一个命令时出现的多余空白行。
使用perl
oneliner:
perl -p -i -e 's/\s/\n/g' example
它将用“ ENTER”(又名\n
)替换空格和制表符
没有人发布python,因此是这样的:
python -c "import sys;lines=['\n'.join(l.strip().split()) for l in sys.stdin.readlines()];print('\n'.join(lines))" < input.txt
我们将输入文件重定向到python
的stdin流中,并逐行读取它。每行都将其尾随的换行符剥离,分割为多个单词,然后重新连接为一个字符串,其中每个单词都由换行符分隔开来,以确保每行有一个单词,并避免在相邻的多个空格时插入多个换行符彼此。最终,我们得到了字符串列表,然后再次将其连接成更大的字符串,并打印到stdout流中。以后可以使用重定向将其重定向到另一个文件> out.txt
。