我正在尝试编写一个shell脚本来删除文件中的单词。这些单词在另一个文件中给出。例如:
输入文件:
I am new in shell script,so I need you help ,thank you
单词文件:
am
in
so
,输出文件应为:
I new shell script, I need you help ,thank you
我尝试编写这样的脚本:
cat words_file | while read line
do
sed "s/$line//g" input >output
done
但只有最后一个单词“so”可以删除,如何在每个循环中保存结果以便我可以删除每个单词,还是有另一种方法来解决这个问题?
答案 0 :(得分:2)
这应该有帮助
#!/bin/bash
cat inputfile | while read line
do
sed -i "s/$line//g" input
done
其中inputfile包含要删除的单词 和输入是您要从
中删除它们的文件答案 1 :(得分:0)
简单地
while read word; do
sed "s/$word//g" input > output # Output to other file
done < words_file
或
while read word; do
sed -i "s/$word//g" input # In place edit
done < words_file
答案 2 :(得分:0)
我最好去awk
执行此任务:
awk 'FNR==NR {words[$1]; next}
{for (i=1;i<=NF;i++) if ($i in a) $i=""}1'
words input
使用您的文件:
$ awk 'FNR==NR {words[$1]; next} {for (i=1;i<=NF;i++) if ($i in words) $i=""}1' words input
I new shell script,so I need you help ,thank you
这将读取words
文件中的所有单词并将其存储在数组words[]
中。然后,它会遍历input
中的行,并删除数组words[]
中显示的单词。