SED コマンドのマージ

SED コマンドのマージ

これら2つのSEDコマンドを組み合わせる最良の方法は何ですか?最初のコマンドはCSPを検索して1行下に移動します。 2番目のコマンドは、列3にセミコロンを配置します。

sed -ne '/CSP/{n;p;}' test1>test2
sed 's/./;/3' test2>final

このコマンドは1つのデータ行に適用する必要があり、単独で実行することはできません。

答え1

通常、sedコマンドは改行またはセミコロンで区切って一緒に配置できます。実際にはshやpythonに少し似ています。 (ほとんどのsedコマンド、つまり一部のコマンドには改行文字が必要です。)

したがってn、およびを一緒に使用するには、最初のコマンドで行ったようにpセミコロンを使用するだけです。この場合、コマンド全体は次のようになります。s{n;p}

sed -ne '/CSP/{n;s/./;/3;p;}' test1 > final

代わりに、改行文字を使用することもできます。

sed -ne '/CSP/{n
s/./;/3
p
}' test1 > final

しかし、単純な1行のコマンドラインでこれを行うのは少し面倒ですが(明らかにLinuxでは難しいです)、cshスクリプトをファイルに保存すると便利です。sed

答え2

また、より大きなファイルで作業し、より多くのファイルの内容を変更せずに維持する必要がある場合は、いくつかのパラメータを削除するのが役に立つという事実も発見しました。後で誰かがこれを見る場合に備えてこの質問に答えています。

sed '/CSP /{n;s/./;/3;}' test1>test2

関連情報