2017-08-08 11 views
0

私はReturn code of sed for no matchの答えを理解しようとしていますが、式sed '/foo/{s/f/b/;q}; /foo/!{q100}'の意味はありません。彼は単純な例を作成することはできませんか?なぜこんなに多くのスラッシュが/、セミコロン;と余分なペアの/foo/パラメータ `q`を値100で正しくsed式に渡すにはどうしたらいいですか?

footrに置き換え、操作に成功するとsedに戻りコード$?が返されるようにしようとしています。私はこのコードを試しても動作しません。

echo "trash"|sed 's/tr/foo/!{q100}'; echo $? 

出力は次のとおりです。

sed: -e expression #1, char 10: unknown option to `s' 
1 

は、どのように私はsedの式に値100を正しくパラメータqを渡すことができますか?

+0

'q'は' s'コマンドに適用するフラグではなく、それ自身でコマンドです。 – chepner

答えて

2

sedコマンドが間違っています。 sedのコマンドは何

$ echo trash | sed '/tr/{ s/tr/foo/; q100 }' 
fooash 
$ echo $? 
100 

/tr/ {  # find the tr string, then enter the block 
s/tr/foo/; # replace tr with foo 
q100  # exit with 100 
} 

残念ながら、sedはよく暗号化された言語であることが知られている、これは仕事をしていません。すべてのスラッシュとセミコロンは、まず眼球で解読する必要があります。深い水に入る前に、良いと徹底的なsedチュートリアルに従うことを強くお勧めします:http://www.grymoire.com/Unix/sed.html

+0

ありがとうございます。しかし、なぜ '/'を '@'に置き換えて 'echo trash | sed '@ tr @ {s @ tr @ foo @; q100} ''?私が 'echo trash | sed '/ tr/{s/tr/foo /; q100} ''と '/'は動作しますが、 '@'では使用できません。 – user

+0

@userこれは動作します 'echo trash | sed '\ @ tr @ {s @ tr @ foo @; q100} ''。この質問は私が上に貼り付けたチュートリアルで答えられます。 – HuStmpHrrr

関連する問題