1つのライナーでそれを行うことは可能ですか?
私はこのような出力を持っています:
"First line" - Description
" Second line" - Description
"Third line" - Description
" Fourth line" - Description
この入力は自動的に生成されます。
各行で最初に出現する"
(引用符+スペース)を"
(引用符)に置き換えたい。置換をグローバルに適用すると、line" -
が出現するたびにline"-
にも変更されるため、sed oneライナーを使用してこれを実現できるかどうか疑問に思いました。
私は^
をこのように使ってみました
sed -r ':a;N;$!ba;s/(\^\" )/\"/g'
しかし、それは機能しておらず、何も置き換えません。私は試した
sed -r ':a;N;$!ba;s/(^|\" )/\"/g'
そしてそれはすべての出現を置き換えます。私はsedを使い始めたばかりなので、何か間違っているのか本当にわかりません。
ここで何が欠けていますか?
難しく考えすぎだよ。 sed
は、デフォルトでは行の最初のインスタンスのみを置き換えます(/g
修飾子なし)。ただし、行の最初のインスタンスは必要ないため、アンカーする必要があります。行頭;通常、使用しようとしている明示的な行アクションは必要ありません(なぜですか)。
sed 's/^" /"/'
私がギークサウルスの答えにコメントすることができないので、より一般的な答え-あなたは^(行頭のアンカー)を入れません。たとえば、Aの最初の出現をBに置き換える場合、次のようになります。
sed 's/A/B/'