【发布时间】:2015-12-04 11:23:13
【问题描述】:
我有数千个 .tsv 文件,我在其中提取第 2 列等于第 6 列的行。
我可以使用下面的 bash 脚本,但我无法在输出中附加列名(标题)。
包含header的方法是什么?
for x in *.tsv; do
awk '$2==$6' <"$x" >"$x.tmp"
mv "$x.tmp" "$x"
done
【问题讨论】:
我有数千个 .tsv 文件,我在其中提取第 2 列等于第 6 列的行。
我可以使用下面的 bash 脚本,但我无法在输出中附加列名(标题)。
包含header的方法是什么?
for x in *.tsv; do
awk '$2==$6' <"$x" >"$x.tmp"
mv "$x.tmp" "$x"
done
【问题讨论】:
如果要根据两个条件进行打印,请这样说:
awk 'FNR==1 || $2==$6' file
这将打印符合以下任一条件的行:
$2==$6 条件。另外,注意你不需要用 bash 循环,awk 可以做到:
awk '(FNR==1 || $2==$6) {print > FILENAME".bk"}' *.tsv
【讨论】:
$2 != $6。