Awk
sed 將上一行的第一個單詞添加到下一行的開頭,如果
我遇到了一個問題,找不到解決以下問題的解決方案。
如果它們以特殊字元開頭,我想將一行的第一個單詞複製到以下 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:]
表示所有字母數字字元。根據您對“特殊字元”的定義調整到不同的字元範圍。