将一个命令的输出重定向到shell脚本中的不同文件

时间:2014-11-13 17:50:50

标签: shell awk

我有一个标签分隔的字符串。

我想将1列复制到一个文件,将其余列复制到其他文件中,如果我使用2个不同的命令,那么该字符串可以在其间进行修改。

我试过了:

tab_seperated_string | awk -F"\t" '{ print $2"\t"$3"\t"$4"\t"$5} {print $1}'

2,3,4,5应该转到一个文件,1应该转到另一个文件。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

tab_seperated_string | awk -F"\t" '{print $2,$3,$4,$5 > "file2"; print $1 > "file1"}' OFS="\t"

然后它会将数据保存到两个不同的文件中。

通过将OFS设置为\t,您不需要print语句中的所有\t


如果你有许多字段转到一个文件而第一个字段转到另一个文件,这是另一种方法:

awk -F"\t" '{print $1 > "file1"; sub(/[^\t]+\t/,""); print $0 > "file2"}' OFS="\t"

sub(/[^\t]+\t/,"")删除第一个字段和第一个标签。