2017-08-28 191 views
0

在一個文件中有%符號打交道,我使用這個命令使用awk命令

awk '{printf $1; for (i=2;i<=10;i++) {printf OFS $i} printf "\n"}' FS='|' OFS='|' file.txt >>new_file.txt 

其做工精細如果記錄不具有任何%在一個文件中的符號。

我的要求:這是給錯誤

Input: 
A|B|C|D|E 
A|B 
Output: 
A|B|C|D|E||||| 
A|B|||||||| 

樣品值 - '20%OFF網上價格MATCH」

我該如何處理這個問題? 錯誤 - awk:printf語句中沒有足夠的參數| 20%OFF ONLINE PRICE MATCH。

+0

請增加實際輸入數據和相應的實際輸出到你的問題。 –

回答

1

的第一個參數printf實際上是格式字符串,它被打印爲-是如果沒有格式化標誌(%X),它是唯一的參數。除非你控制了字符串,否則你應該總是爲printf提供兩個參數,正是出於這個原因,也就是爲了防止在提供的字符串中出現格式化標誌(預期的或其他)。在你的情況,改變printf語句來

printf "%s", $1 

printf "%s", OFS $i 

,你應該罰款。

舉例來說:

$ echo '20% OFF ONLINE PRICE MATCH' | awk -F\| '{ printf $1 }' 
awk: weird printf conversion % O 
input record number 1, file 
source line number 1 
awk: not enough args in printf(20% OFF ONLINE PRICE MATCH) 
input record number 1, file 
source line number 1 

$ echo '20% OFF ONLINE PRICE MATCH' | awk -F\| '{ printf "%s\n", $1 }' 
20% OFF ONLINE PRICE MATCH 
+0

.....在做了上述更改之後,現在腳本完全按照我的要求工作。感謝您的及時迴應。萬分感激。 – Kumar