sedでqとsコマンドを一緒に使用するには?

sedでqとsコマンドを一緒に使用するには?

私はqsedでコマンドを使用し(head -n最初の数行だけ模倣してインポートしようとしています)、その行でのみs/パターンを変更しようとしています。

最初の式を省略すると、正確に必要に応じて置換が機能しますが、最初の行にのみ置換を適用しようとすると、最初の置換のみが発生します。-i後でコマンドを使用したいので、headの代わりにsedを使用してください。

sed -e '2q' -e 's/\([0-9]\{4\}[[:space:]]\)\{3\}/XXXX XXXX XXXX /g' file

ベストアンサー1

表現の順序が重要です。例は次のとおりです。

cat file
a
a
a
a

< file sed '2q; s/a/b/g'
b
a

< file sed 's/a/b/g; 2q'
b
b

だからやめなければなりません。後ろに2行目を交換しました。現在は、代替式を適用する前に終了します。または構文を好む場合-e

< file sed -e 's/a/b/g' -e '2q'

若干異なる状況:

最初の 2 行にのみ置換項目を適用し、ファイル全体を印刷するには、-iこの操作を一緒に実行すると、次のことができます。

< file sed '1,2 s/a/b/g' file
b
b
a
a

行の範囲を一致させ、1,2その範囲に対してのみ次の式を実行します。この範囲内で動作する式が多い場合は、{}次のように含めます。

< file sed '1,2{s/a/b/g; s/c/d/g;}' file

おすすめ記事