行で区切られたユーザー名のみを含むテキストファイルの例は次のとおりです。
@Alice
@Bob
Cindy
Leon
@Mark
@
その行がまだ含まれていないすべての行の先頭にどのように追加しますか?
答え1
sed
スクリプトのステートメントには行番号またはアドレスにすることができ、(not)に反転できるパターンがあるため、ここに次のように書くこと[address[,address]][!] action
ができます。address
/regexp/
!
sed '/^@/! s/^/@/' < file
@
まだ存在しない行の先頭にを追加します。
アドレスは(line start()の後の行/^@/
)です。これは反転され、ジョブ(代わりにラインスタートを使用)が一致しない行でのみ実行されます。@
^
!
s/^/@/
s
@
次の方法で同じ効果が得られます。
sed 's/^@\{0,1\}/@/' < file
@
先行 0 または 1 は@
ERE と同じです。
sed -E 's/^@?/@/' < file