我可以编写一个 shell 脚本来循环执行此操作,但是是否有使用终端的单行解决方案?
答案1
不是用一个cut
命令。你可以这样做awk
:
awk -F '\t' '{print $1 > "file1"; print $2 > "file2"}' < file
或者对于每个领域:
awk -F '\t' '{for (i = 1; i <= NF; i++) print $i > "file" i}' < file
或者为了避免使用管道和 2 次调用来避免读取文件两次cut
,使用像 AT&T ksh、zsh 或 bash 这样支持进程替换的 shell:
< file tee >(cut -f2 > file2) | cut -f1 > file1
当心ksh
,bash
不要等待对于cut
在进程替换中运行的该命令,因此在这些 shell 中,file2
当您运行之后的下一个命令时,可能尚未完成。
答案2
我认为你可以这样做:
cut -f1 input | tee output1 | cut -f1 > output2
如果您想要提交的是第一列和第二列。