0
我有了整数列一个文件 - >文件1如何删除一个文件的第一个值没有出现在另一个文件中的行?
1 2 3
2 2 2
3 2 1
3 1 4
4 1 4
5 0 0
我有一个的(唯一的)整数单列另一个文件 - >文件2
1
3
4
这两个文件都非常大。我想删除File1的第一列值不出现在File2中的行。
1 2 3
3 2 1
3 1 4
4 1 4
我有了整数列一个文件 - >文件1如何删除一个文件的第一个值没有出现在另一个文件中的行?
1 2 3
2 2 2
3 2 1
3 1 4
4 1 4
5 0 0
我有一个的(唯一的)整数单列另一个文件 - >文件2
1
3
4
这两个文件都非常大。我想删除File1的第一列值不出现在File2中的行。
1 2 3
3 2 1
3 1 4
4 1 4
您可以通过File1行循环,从每行中提取第一个数字并尝试查找与File2中的数字完全匹配。
#!/bin/bash
IFS=$'\n'
re='^[0-9]+$'
for i in $(cat File1); do
num=$(echo $i | awk '{print $1}')
grp=$(grep "^${num}\b" File2)
if [[ $grp =~ $re ]] ; then
echo $i
fi
done
您可以将此脚本的输出保存在一个临时文件中,并使用它来覆盖原始File1。
[不要用'for'读取文件的行](http://mywiki.wooledge.org/DontReadLinesWithFor) –
这可以用'awk'轻松完成。请显示你的尝试。 – Barmar
我还没有尝试过任何东西,因为我不确定从哪里开始。 – pmdaly
首先将'File2'读入数组。然后在读取'File1'时,如果数组中没有列,请打印该行。 – Barmar