编辑:
这里的目标是测试fileB中的行是否仍然存在于fileA中,如果不存在则从fileB中删除
1)fileA保存被覆盖的数据
2)fileB保存来自fileA的数据以使用和操作
进行计算3)一旦fileA发生变化,fileB中的特定行因为更改而不再在fileA中,那么fileB必须删除这些行
我想逐行读取文件并检查该行是否仍然存在于不同的文件中
fileA.txt具有类似的数据输入,但是每2秒写一次:
456 6554 56734657387365873456783456
457 4545 36747365467345735736345665
454 4357 98345783465785345567865535
456 6646 70899089089056879678575775
fileA.txt的内容附加到fileB.txt
fileA.txt>> fileB.txt
我的fileB.txt看起来像这样:
456 6554 56734657387365873456783456
457 4545 36747365467345735736345665
454 4357 98345783465785345567865535
456 6646 70899089089056879678575775
我的主要目标是阅读fileB.txt并检查fileA.txt中是否仍存在每一行,如果不存在则从fileB.txt中删除该行
以下是我的开始:
while read line
do
if grep -q "$line" fileA.txt; then
echo "This part is point less im still learning"
else
sed '/$line/d' ./fileB.txt
fi
EDIT:
这里的目标是测试fileB中的行仍然存在于fileA中,如果不是从fileB中删除它们
1)fileA保存被覆盖的数据
2)fileB保存来自fileA的数据以使用和操作
进行计算3)一旦fileA发生变化,fileB中由于更改而不再在fileA中的行也必须从fileB中删除 完成> fileB.txt
答案 0 :(得分:5)
您可以使用grep -F
- 它更直接,更有效:
grep -xF -f fileA.txt fileB.txt > fileB.txt.trimmed
答案 1 :(得分:0)
如果你想要一个小命令,你可能需要创建一个中间文件。还要检查您是否有comm
。将标志-1 -2
与它一起传递以获得公共线。
comm fileA.txt fileB.txt -12 > fileB.txt.trimmed