Columns
如何為所有行剪切一個特定列中的最後 5 個字元串
我有一個包含多列和多行的文件,我需要剪切第三列的最後 5 個字元串並將其列印在額外的列中。例如:
1 info1 AAAAAAAAAAA 2 info23 TTTTTTTTTT 3 ingo45 ATATATATATATAT 4 info67 GGGYYYYUUUUUUU
我的輸出將是:
1 info1 AAAAAAAAAAA AAAAA 2 info23 TTTTTTTTTT TTTTT 3 ingo45 ATATATATATATAT TATAT 4 info67 GGGYYYYUUUUUUU UUUUU
我只能通過以下方式僅剪切第三列:
cat input_file | cut -f3 | grep -o '.\{5\}$' > output_file
但我想維護我原來的表。有什麼建議嗎?
簡短**
AWK
**的方法:awk '{ $(NF+1)=substr($NF, length($NF)-4) }1' input-file
$NF
- 最後一個欄位值$(NF+1)
- 成為最後一個欄位(在最初的最後一個欄位之後$NF
)length($NF)-4
- 獲取5 個字元切片的起始位置/偏移量輸出:
1 info1 AAAAAAAAAAA AAAAA 2 info23 TTTTTTTTTT TTTTT 3 ingo45 ATATATATATATAT TATAT 4 info67 GGGYYYYUUUUUUU UUUUU
———-
通過字元串替換也可以達到同樣的效果:
awk '{ sub(/.{5}$/, "& &") }1' input-file
/.{5}$/
- 匹配記錄末尾的最後 5 個字元&
- 指向整個匹配序列