
我要把最后那一列移動最前面,有沒有完美的解決辦法,試了sed和awk好像都不能完美解決!求大神幫忙看看
uj5u.com熱心網友回復:
輸出 | awk '{printf "%15-s %100-s\n",$NF,$0}' | sed -r 's/[[:blank:]]+$//' | sed -r 's/(^.*)([[:blank:]]+)(.*$)/\1/'
有點復雜,看看行不行(前提是最后一列沒有空值,有空值會有問題)
1)awk '{printf "%15-s %100-s\n",$NF,$0}'把每行最后一個欄位在第一列再輸出一次(最后一列有空值,那就不行了; 本來準備用awk '{$NF="";print}'替換最后一個欄位為空來去掉最后一列,但是發現這樣,格式就亂了,不好對齊,就用了兩個sed處理)
2)sed -r 's/[[:blank:]]+$//'去掉行尾的空格
3)sed -r 's/(^.*)([[:blank:]]+)(.*$)/\1/'分組之后,去掉最后一列和最后一列前面空格
uj5u.com熱心網友回復:
另外%15-s 和%100-s是我隨便弄的,你根據你輸出,看一下實際要多少個字符寬度,你的這兩個值應該要調大一點uj5u.com熱心網友回復:
嗯,非常感謝,剛試了一下,你的方法是可以的!但是請問[[:blank:]]+和[\s]+這兩個有什么區別嗎?我換了[\s]+以后不一樣,很大變化
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/100555.html
標籤:非技術區
