如何在当前目录

时间:2017-07-14 05:28:38

标签: shell unix

假设我在当前目录中有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'

2 个答案:

答案 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 )