我正在使用这个命令
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%折扣”
我该如何处理这个问题?错误- awk: printf语句中没有足够的参数|20%的折扣在线价格匹配。
发布于 2017-08-28 18:02:34
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 MATCHhttps://stackoverflow.com/questions/45915606
复制相似问题