問題がありますが、次の問題に対する解決策が見つかりませんでした。
特殊文字で始まる場合は、行の最初の単語を次のn行の先頭にコピーし、そうでない場合は新しい単語をコピーしたいと思います。
入力する:
aaa random words
`dsf
|df
bbb
|d
出力:
aaa random words
aaa`dsf
aaa|df
bbb
bbb|d
答え1
awk oneliner:
awk '/^[[:alnum:]]/ {prefix = $1; print; next} {print prefix $0}' input
- 英数字で始まる行の最初の単語をに保存し、その
prefix
行を印刷してから次の行に進みます。 - 他のすべての行では、
prefix
この行の前に印刷してください。
答え2
awk -f 1stword.awk < input
これには1stword.awk
次のスクリプトが含まれています。
$0 ~ /^[[:alnum:]]/ { word=$1 ; print } # save 1st word
$0 ~ /^[^[:alnum:]]/ { print word$0 } # prepend saved word
[:alnum:]
文字範囲内のすべての英数字を表します。 「特殊文字」定義に従ってさまざまな文字範囲を調整します。