Awk

sed 將上一行的第一個單詞添加到下一行的開頭,如果

  • February 27, 2020

我遇到了一個問題,找不到解決以下問題的解決方案。

如果它們以特殊字元開頭,我想將一行的第一個單詞複製到以下 n 行的開頭,否則複製新單詞。

輸入:

aaa random words

`dsf

|df

bbb

|d

輸出:

aaa random words

aaa`dsf

aaa|df

bbb

bbb|d

一個 awk 單行:

awk '/^[[:alnum:]]/ {prefix = $1; print; next} {print prefix $0}' input
  • 在以字母數字字元開頭的行上,將第一個單詞儲存在 中prefix,列印該行並繼續到下一行。
  • 在所有其他行上列印prefix該行之前。
awk -f 1stword.awk < input

其中1stword.awk包含以下腳本:

$0 ~ /^[[:alnum:]]/ { word=$1 ; print }   # save 1st word
$0 ~ /^[^[:alnum:]]/ { print word$0 }     # prepend saved word

字元範圍內的[:alnum:]表示所有字母數字字元。根據您對“特殊字元”的定義調整到不同的字元範圍。

引用自:https://unix.stackexchange.com/questions/570008