sed を使用して、ファイル内のすべての行をその行の最初のパターンに置き換えます。

sed を使用して、ファイル内のすべての行をその行の最初のパターンに置き換えます。

1つのライナーでできますか?

私は次のような結果を得ました。

"First line" - Description  
" Second line" - Description  
"Third line" - Description  
" Fourth line" - Description  

この入力は自動的に生成されます。

各行で"(quote + space)の最初の項目を(quote)に置き換えたいと思います。代替エントリをグローバルに適用すると、toが"発生するたびに変更されるため、sed onelinerを使用してこれを実行できるかどうか疑問に思います。line" -line"-

^私はこのように使ってみました。

sed -r ':a;N;$!ba;s/(\^\" )/\"/g'

しかし、それはうまくいかず、何も置き換えません。頑張った

sed -r ':a;N;$!ba;s/(^|\" )/\"/g'

そしてそれはすべてのイベントを置き換えます。私はsedを使い始めたので、私が何か間違っているかどうかわかりません。

私がここで何を見逃しているのでしょうか?

答え1

あなたはとても考えています。 sedデフォルトは、行の最初のインスタンス(修飾子なし/g)のみを置き換えることです。しかし、行の先頭にあるインスタンスほど行の最初のインスタンスが必要ないので、まだ固定したいと思います。通常、明示的な行操作を使用しようとする必要はありません(なぜですか)。

sed 's/^" /"/'

答え2

もっと一般的な答えはgeekosaurの答えについて言及できないので、^(ラインアンカーの始まり)を配置しません。たとえば、A の最初の項目を B に置き換えるには、次のようにします。

sed 's/A/B/'

答え3

使用真珠

~$ perl -pe 's/^" /"/;'   file 

使用幸せ(以前のPerl_6)

~$ raku -pe 's/^\" \s /"/;'  file

入力例:

"First line" - Description  
" Second line" - Description  
"Third line" - Description  
" Fourth line" - Description  

サンプル出力(2つのコード例):

"First line" - Description  
"Second line" - Description  
"Third line" - Description  
"Fourth line" - Description  

https://perldoc.perl.org/perlre
https://perldoc.perl.org/perltrap#Sed-Traps
https://docs.raku.org/言語/regexes

関連情報