假设我在当前目录中有4个扩展名为.txt的文件,我想从一个文件中替换一个模式。条件是我们不知道文件的名称,更换必须只在一个文件中完成。其他文件不应受到影响。 例如:
user / home> ls -lart * .txt
a1.txt b1.txt c1.txt d1.txt
有一个词" Day"在所有这些文件中,我想用" Night"只在一个文件中,不影响其他文件。我怎么能这样做?
我在下面尝试过,但它取代了所有4个文件中的模式。
找到。 -type f -name" * .txt" | xargs sed' s / day / Night / g'答案 0 :(得分:0)
有很多方法可以做到这一点。
for file in *.txt; do
sed 's/Day/Night/g' "$file";
break; done
既快速又健壮。
答案 1 :(得分:0)
搜索带有模式的文件,并使用-i
标志替换为原位:
sed -i 's/Day/Night/' $(grep -l "Day" *.txt | head -1 )