我想知道您是否可以覆盖您正在使用 bash 处理的文件?我已经对单词进行了排序,并且正在循环播放它。当我找到我想要的词时,我使用 && 将它保存到 file2,我想使用 ||从 file1 中删除它,但在下一次迭代中我想使用文件的更新版本。
while read word; do
[[string1==string2]] && echo something || delete word from file
done < file1 > file2
我尝试使用|| sed -i -e 's/$word//g' file1
但它不起作用。它创建具有奇怪名称的文件并且不更新当前文件。
有什么想法吗?
最佳答案
除了一个一个地做之外,你可以批量做这些
grep -xvFf keys file > file_keys_removed
grep -xFf keys file > file_keys_only
或者使用 awk
一次性完成。
awk 'NR==FNR {a[$0]; next}
{f=FILENAME "_keys_" (($0 in a)?"only":"removed");
print > f}' keys file
关于linux - 是否可以覆盖您正在处理的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144038/