[20 を含む文字列を選択する sed スクリプトを作成しています。
私が使用しているコマンドは次のとおりです。
sed -n "/\[20/p" "C:\test_scripts\new1.txt"
これは mks ツールキットの sed で動作しています。ただし、Cygwin の sed でこれを使用しようとすると、次のエラーが発生します。
sed: -e expression #1, char 6: unterminated address regex
推測では、Cygwin シェルはsed
スクリプト内のバックスラッシュを削除しているため、sed
コマンドは/[20/p
表示されているエラー メッセージを生成する必要があることを認識しています。次のいずれかを使用して、これを確認できます。
set -x
sed -n "/\[20/p" ...
set +x
または:
echo sed -n "/\[20/p" ...
これらは、sed
プログラムが見ているものを示しているはずです (set -x
表記は、引数全体を一重引用符で囲む場合があります)。
いくつかの可能性があり、そのほとんどが機能するはずです:
sed -n '/\[20/p' ...
sed -n "/\\[20/p' ...
sed.script
) を編集して/\[20/p
(1 行) を含め、次を実行します。sed -n -f sed.script ...
シェルは、一重引用符内の素材をいじってはいけません。バックスラッシュを 2 倍にすることは、バックスラッシュがなくなるという問題に対処する従来の方法です。他のいずれかが機能する場合、sedスクリプトファイルを使用することはコンテキスト内でやり過ぎですが、シェルがsedスクリプトの内容を台無しにすることも防ぎます。