我必须将1.txt文件归档,而2.txt 1.txt在每一行中都有一个数字,表示itemID。例如
43
345
65第二个文件是csv,具有以下模式: userID、itemID、time
为此,我想从第二个文件中删除它们的itemID在第一个文件中的所有行,为此,我执行以下操作
#!/bin/bash
while IFS= read -r var 
do
 paste -sd '|' | xargs -I{} grep -v -E {} 2.txt
done < "1.txt"我读取第一个文件并创建一个正则表达式,但不知道egrep的参数以获得第二个字段(ItemID)
发布于 2017-11-15 08:56:55
带锥
awk -F "," 'FNR==NR{a[$0]=1;next} a[$2]!=1{print}' 1.txt 2.txta[$0] = 1将1.txt中存在的项id记录到数组a中a[$2] != 1从2.txt中打印出在数组a中没有项id的行发布于 2017-11-15 08:36:39
您可以使用sed将逗号添加到1.txt中每个id的开头和结尾,然后只需使用grep筛选出产生的字符串:
sed 's/^\|$/,/g' 1.txt | grep -vFf- 2.txt-F将模式解释为固定的字符串,即不是正则表达式。-f告诉grep从给定文件中读取模式,在本例中是-,即标准输入。https://stackoverflow.com/questions/47302361
复制相似问题