如何使用 awk 或 sed 根据值列表将文件分成两部分?
How to use awk or sed to split a file into 2 parts based on a list of value?
我有两个文件。其中之一是包含很多列的主文件。另一个包含有关样本列表的信息。现在我想根据样本(行)是否在第二个文件的列表中将主文件分成两部分。现在我使用这样的代码
awk 'NR == FNR {a[]; next} !( in a)' $i.list $i > no_in_list.$i
排除列表中的样本,但我想知道是否可以同时保留列表中的样本。
您可以使用 print >> "file"
操作在指定文件中打印而不是标准输出(使用 GNU awk 测试):
awk -v nil="no_in_list.$i" -v il="in_list.$i" '
NR == FNR {a[]; next}
!( in a) {print >> nil}
( in a) {print >> il}' $i.list $i
我有两个文件。其中之一是包含很多列的主文件。另一个包含有关样本列表的信息。现在我想根据样本(行)是否在第二个文件的列表中将主文件分成两部分。现在我使用这样的代码
awk 'NR == FNR {a[]; next} !( in a)' $i.list $i > no_in_list.$i
排除列表中的样本,但我想知道是否可以同时保留列表中的样本。
您可以使用 print >> "file"
操作在指定文件中打印而不是标准输出(使用 GNU awk 测试):
awk -v nil="no_in_list.$i" -v il="in_list.$i" '
NR == FNR {a[]; next}
!( in a) {print >> nil}
( in a) {print >> il}' $i.list $i