Awk

連接兩列字元串

  • July 7, 2022

請問如何連接兩列字元串並在它們之間插入_?

我有一個文件:

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

對於給定的數據,這與上述相同,但如果前兩個欄位之間存在此類字元,則會匹配更大的類似空格的字元集合(\sPCRE 符號匹配 like [[:space:]],其中還包括垂直製表符、輸入-returns 和換頁符)。

鑑於問題中的數據,這將產生以下輸出:

L_o     45
OK_kklkj 5

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