我有一个包含整数列的文件 -> File1
1 2 3
2 2 2
3 2 1
3 1 4
4 1 4
5 0 0
我有另一个包含单列(唯一)整数的文件 -> File2
1
3
4
两个文件都非常大。我想删除第一列值未出现在 File2 中的 File1 行。
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
您可以将此脚本的输出保存在一个临时文件中,并用它来覆盖原始文件 1。
关于linux - 如何删除一个文件的第一个值未出现在另一个文件中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360968/