複数行にsedコマンドを書き込む

複数行にsedコマンドを書き込む

sedを学びようとすると、このような状況が発生しました。

$ echo "abcd" | sed -n "/b/p"
abcd

うまくいきます、

$ echo "abcd" | sed -n "
→ /b/p"
abcd

またいいけど、

$ echo "Abcd" | sed -n "/b
/p"
sed: -e expression #1, char 2: unterminated address regex

バグ報告にはどのような問題がありますか?

答え1

/b/p完全なsedコマンドです。各sedコマンドは1行にする必要があります。 1行に入力すると、/bsedはそれを構文エラーとして扱います。合格を試すことができます。

echo "abcd" | sed -n "/b"

結果を確認してください。また試すことができます

echo "abcd" | sed -n "/b/p
> p"

そして、このコマンドが完了した後に次のコマンドが適用されることを確認してください。

答え2

sedパターンは基本的に行ベースなので、2番目のスラッシュが最初の行と同じ行にあると予想します。からinfo sed

SCRIPTまたはSCRIPT-FILEのコマンドは、セミコロン( ';')または改行(ASCII 10)で区切ることができます。

答え3

Linuxのほとんどのコマンドはデフォルトで行ベースであるため、2番目のスラッシュが最初のスラッシュと同じ行にあると予想します。 3番目のタスクを実行するには、次のものを使用できます。

$ echo "Abcd" | sed -n "/b\
 /p"
 Abcd

関連情報