Answers:
这是一个 xargs
xargs -n1 < file.txt
演示:
$ cat file.txt
106849_01373 106849_01967 106850_00082 23025.7_01059
$ xargs -n1 < file.txt
106849_01373
106849_01967
106850_00082
23025.7_01059
相当容易tr
:
tr -s '[:blank:]' '\n' <file.txt
例:
% cat file.txt
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
% tr -s '[:blank:]' '\n' <file.txt
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
heemayl的答案是解决之道,但是这是使用Perl的替代方法:
perl -lane '$,="\n"; print(@F)' file.txt
-l
:启用自动行结束处理。它有两个单独的作用。首先,当与-n或-p一起使用时,它会自动砍掉$ /(输入记录分隔符)。其次,它将$ \(输出记录分隔符)分配为octnum的值,以便任何打印语句将重新添加该分隔符。如果省略octnum,则将$ \设置为$ /的当前值。-a
:当与-n或-p一起使用时,将打开自动分割模式。对@F数组的隐式split命令是由-n或-p生成的隐式while循环内的第一件事。-n
:使Perl在您的程序周围假设以下循环,从而使其遍历文件名参数,如sed -n或awk:
LINE:
while (<>) {
... # your program goes here
}
-e
:可用于进入程序的一行;
$,="\n"
:将输出字段分隔符设置为换行符;print(@F)
:打印由输出字段分隔符分隔的字段。% cat file.txt
106849_01373 106849_01967 106850_00082 23025.7_01059
% perl -lane '$,="\n"; print(@F)' file.txt
106849_01373
106849_01967
106850_00082
23025.7_01059
AWK
方法。基本上更改字段的输出分隔符,然后循环。测试文件是您的示例,该示例一遍又一遍地粘贴到ENDLINE
$ awk 'BEGIN{OFS="\n"}{for(i=1;i<=NF;i++) print $i}' some_data
106849_01373
106849_01967
106850_00082
23025.7_01059
ENDLINE
106849_01373
106849_01967
106850_00082
23025.7_01059
ENDLINE
106849_01373
106849_01967
106850_00082
23025.7_01059
ENDLINE
我只是添加一个有趣的Python解决方案:
python3 -c 'import sys; f=open(sys.argv[1]); print(*f.read().split(),sep="\n")' mytestfile
该命令以“单引号”运行单行Python 3脚本,最后将您要转换为参数的文件名作为文件名。语法如下:
python3 -c 'PYTHON_COMMAND_OR_1-LINE-SCRIPT' ARGUMENTS
我们使用的1行脚本是这样的(为清楚起见,扩展为多行):
import sys
f=open(sys.argv[1])
print(*f.read().split(),sep="\n")
它导入sys
模块以读取命令行参数,以第一个给定的参数作为文件名打开,并在一行中打印文件中每个空格分隔的数据块。
$ cat mytestfile
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
$ python3 -c 'import sys; f=open(sys.argv[1]); print(*f.read().split(),sep="\n")' mytestfile
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059