使用awk替换逗号分隔文件中的字符串

时间:2014-02-19 17:49:56

标签: shell unix awk nawk

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

inputfile.txt

123 | abc | 321456 | tre 

213 | fbc | 342    | poi 

outputfile.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}'

2 个答案:

答案 0 :(得分:0)

尝试:

awk 'length($3) > 3 { $3=substr($3, 1, 3)"###" } 1 ' FS=\| OFS=\| test1.txt

答案 1 :(得分:0)

这适用于gawk:

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

它不会保留空格,因此您可能希望通过column -t

进行管道传输