2014-02-19 16 views
0

如果第三列有三個以上的數字,我需要在下面的nawk命令中實現if條件來處理輸入文件。請參考幫助命令我做錯了,因爲它是不工作。使用nawk替換逗號分隔符文件中的字符串

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}' 
+0

要管這將不保留空白,你可能只是需要一個';'的字符串「###」和CMD'打印之間'。祝你好運。 – shellter

+0

我沒有看到任何逗號... – twalberg

回答

0

嘗試:

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

由於空格將成爲該字段的一部分,因此您必須做更多的工作 –

0

這窩與GAWK KS:

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

所以你可能會通過column -t