2016-03-29 5 views
0

私はラインでこのMYFILEを持って満たされた後にのみ交換してくださいSEDファイル内の最初の「cat」がファイル内で満たされた後で置き換えを行いたい場合は、条件が

dog 
snake 
dog 
cat 
lion  
snake 
python 
cat 
lion 
cat 
lion 

どうすればいいですか? 最初の「cat」という行が先験的にわからないことに注意してください。私は最初の猫を見つけ、その後、

答えて

3

使用range addressにそこからsedを適用する必要があります。

sed '/cat/,$s/dog/lion/' a.txt 

この場合は範囲​​がcatの最初の発生時に開始され、入力の終わりで終了し、 /cat/,$で表される。

0

翻訳sedソリューション説明

$ awk '/cat/,0{sub("dog","lion")}1' file 

awkへの:猫から

/cat/,0は、ファイルの最後に

sub("dog","lion")ライオンと犬を置き換える

1印刷

0

前のラインがcatある場合にのみ、dogためlionに置き換えて処理するための追加オプションがあります。たとえば

sed "/cat/{N;s/dog/lion/;}" 

、あなたのデータファイルがfile.txtとして保存して:

$ sed "/cat/{N;s/dog/lion/;}" file.txt 
dog 
snake 
dog 
cat 
lion 
snake 
python 
cat 
lion 
cat 
lion