私はq
sedでコマンドを使用し(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