【发布时间】:2021-12-11 08:22:39
【问题描述】:
我有以下 shell 脚本,它不会删除预期文件中的行。本质上,我有一个包含要删除的数据行的文档。在另一个文件中,我有一个 GUID 列表,如果 GUID 匹配,我想将其从源文件中删除。
#!/bin/bash
while read testing
do
echo $testing
sed -i "/$testing/d" /home/bbelden/ndp.CSV
done < t2.txt
当我运行此行时,不会从 ndp.CSV 文件中删除,如果我在运行时执行 ps aux,我会看到以下命令:
root 17266 107 0.0 14880 1020 pts/1 R+ 17:23 0:02 sed -i /58db9697-a5d5-98ab-200e-66d0c0767147?/d /home/bbelden/ndp.CSV
不太清楚这里发生了什么。我正在运行 Debian 9。
谢谢
【问题讨论】:
-
由于某种原因,它似乎在 sed 语句中添加了尾随问号,如 ps aux 语句中所示。不知道为什么会这样。
-
检查您的
t2.txt是否有回车 -
好奇怪。我使用了您的相同脚本,一切正常。尝试使用
cat -A <filenames>查看文件的“真实”内容,用于 ndp.CSV 和 t2.txt 的 bot 也许您在其中一些文件中有奇怪的字符(我打赌是 t2.txt 文件) -
你考虑过
grep -vf t2.txt /home/bbelden/ndp.CSV吗?