0

如果第三列的数字超过三位数,我需要在下面的 nawk 命令中实现 if 条件来处理输入文件。请帮助我做错的命令,因为它不工作。

输入文件.txt

123 | abc | 321456 | tre 

213 | fbc | 342    | poi 

输出文件.txt

123 | abc | 321### | tre 

213 | fbc | 342    | poi 

cat inputfile.txt | nawk 'BEGIN {FS="|"; OFS="|"} {if($3 > 3) $3=substr($3, 1, 3)"###" print}'
4

2 回答 2

0

尝试:

awk 'length($3) > 3 { $3=substr($3, 1, 3)"###" } 1 ' FS=\| OFS=\| test1.txt
于 2014-02-19T17:55:18.937 回答
0

这适用于 gawk:

awk -F '[[:blank:]]*\\\|[[:blank:]]*' -v OFS=' | ' '
    $3 ~ /^[[:digit:]]{4,}/ {$3 = substr($3,1,3) "###"} 
    1
' inputfile.txt 

它不会保留空白,因此您可能想要通过管道column -t

于 2014-02-19T21:13:13.290 回答