【发布时间】:2017-12-07 17:00:31
【问题描述】:
我觉得我已经离问题太近了,我只能自己解决它,尽管我确信它很容易解决。
我正在为我的 Raspberry PI 开发一个带有 SHELL 脚本的 NAS,它会自动收集数据并将其分发到我的其他设备上。所以我决定包含一个删除选项,否则删除一个文件会很痛苦,因为树莓总是会从其他设备复制回来。当脚本运行时,它会创建一个文件:del_tmp_$ip.txt,其中是要从 del_$ip.txt 中删除的目录和文件(不是 del_TMP_$ip.txt)。 它看起来像这样:
test/delete_me.txt
test/hello/hello.txt
pi.txt
我试图通过 awk 删除这些行,这就是我现在的进度:
while read r; do
gawk -i inplace '!/^'$r'$/' del_$ip.txt
done <del_tmp_$ip.txt
如果 del_tmp_$ip.txt 中的行告诉 gawk 删除 pi.txt,它可以正常工作,但如果字符串包含像 test/delete_me.txt 这样的斜线,它就不起作用:
“意外的换行符或字符串结尾”
然后它指向最后一个斜线。
我无法手动使用反斜杠转义正斜杠,因为我不知道是否会有斜杠以及会有多少斜杠。取决于包含要删除的信息的文件的行。
希望你能帮帮我!
【问题讨论】:
-
我认为你可以简单地使用
grep -Fvxf 'del_tmp_$ip.txt' 'del_$ip.txt' -
实际上可行。正如我所说,我试图解决这个问题很长时间,以至于我看不到另一个解决方案。谢谢!