Awk
連接兩列字元串
請問如何連接兩列字元串並在它們之間插入_?
我有一個文件:
L o 45 OK kklkj 5
期望的結果是:
L_o 45 OK_kklkj 5
我試過了:
awk '{printf "%12s %22.2f\n", $1+'_'+$2, $3}' file
它將字元串轉換為數字。謝謝你。
使用
awk
$ awk '{$0=$1"_"$2FS$NF}1' input_file | column -t L_o 45 OK_kklkj 5
使用
sed
:sed 's/[[:blank:]]\{1,\}/_/' file
這會將第一次出現的一個或多個連續空格(空格或製表符)替換為單個下劃線字元。
使用 GNU
sed
,這可以縮短為gsed -E 's/\s+/_/' file
對於給定的數據,這與上述相同,但如果前兩個欄位之間存在此類字元,則會匹配更大的類似空格的字元集合(
\s
PCRE 符號匹配 like[[:space:]]
,其中還包括垂直製表符、輸入-returns 和換頁符)。鑑於問題中的數據,這將產生以下輸出:
L_o 45 OK_kklkj 5