テキストの先頭と末尾に$と一致するテキストを追加する方法

テキストの先頭と末尾に$と一致するテキストを追加する方法

テキストの先頭と末尾に一致するテキストを追加する方法$

入力例:

$ hello
$  yes
r no change

ファイルの先頭と末尾にテキストを追加して一致させたいです$。出力が欲しいです。

start $ hello end
start $  yes end 
r no change

ベストアンサー1

別のsed方法:

sed '/^\$/ s/.*/start & end/' infile

sedはの一致パターン部分の&逆参照ですs/<pattern>/<replace>/


以下を使用してawk同じことを実行することもできます。

awk '/^\$/{ $0="start " $0 " end" }1'  infile

inはawk現在の$0レコード/行を表します。レコード/行はawkの組み込み関数によって区別されますRSエココードSeparator)変数、デフォルトは\newlineです。 awkがレコードを読み取るときに設定する組み込み変数のデフォルトのいくつかを見てみましょう。

awk -d- '0' <<<'1'

awkは2つの部分で構成されcondition { action }、そのうちの少なくとも1つはawkコマンドになければなりません。

私たちの条件はこれです模様つまり/^\$/^ドルで始まり、likeがレコードが始まるアンカーであり、レコードが終わるアンカーである\$ため、エスケープします。^$

レコードの周囲に固定文字列を追加してレコードを更新し、$0="start " $0 " end"再作成します。start end$0

/pattern/ { action }1ここで、1isは実際にaekのデフォルトの印刷ジョブを有効にする常にtrue条件です。結果が true で印刷ジョブをトリガーする条件を作成できます。

awk '/pattern/ { action }; 1!=0'
awk '/pattern/ { action }3'
...

printあるいは、ジョブ自体を使用することもできます。

awk '/pattern/ { action }; { print }'

おすすめ記事