Text-Processing
awk 只列印修改的行
我有這樣的文件
d1000 1000 d1001 100 d1002 10 d1003 1
我想修改長度不等於 4 的第二列。但我只想列印已修改的行,因此第 2 列中的原始文本保留在第 2 列中,並且更改列印在第 3 列中,並增加一個數字。
期望的輸出:
d1001 100 1101 d1002 10 1102 d1003 1 1103
我正在嘗試這些方面,但無法獲得語法或結果
awk -v n=1100 '((length($2)!=4 && length($2)>0) {new=($2=++n)}; {print $1, $2, new}' file
您可以像這樣將
$0
) 和一個新欄位,,
在參數之間使用輸出分隔符。awk -v n=1100 'length($2)!=4 {print $0,++n}' file
輸出:
d1001 100 1101 d1002 10 1102 d1003 1 1103
如果您需要對輸出進行任何其他格式設置,可以使用
printf
function. 這是對齊的範例:$ awk -v n=1100 'length($2)!=4 {printf "%s %4s %s\n", $1, $2, ++n}' file d1001 100 1101 d1002 10 1102 d1003 1 1103 $ awk -v n=1100 'length($2)!=4 {printf "%s %-4s %s\n", $1, $2, ++n}' file d1001 100 1101 d1002 10 1102 d1003 1 1103