Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用awk命令处理文件中的%symbol_Unix_Awk - Fatal编程技术网

Unix 使用awk命令处理文件中的%symbol

Unix 使用awk命令处理文件中的%symbol,unix,awk,Unix,Awk,我正在使用这个命令 awk '{printf $1; for (i=2;i<=10;i++) {printf OFS $i} printf "\n"}' FS='|' OFS='|' file.txt >>new_file.txt 给出错误的样本值-“在线比价20%折扣” 我如何处理这个问题? 错误-awk:printf语句中没有足够的参数|在线比价20%。printf的第一个参数实际上是格式字符串,如果没有格式标志(%x)并且它是唯一的参数,它将按原样打印。除非您控制字符串

我正在使用这个命令

awk '{printf $1; for (i=2;i<=10;i++) {printf OFS $i} printf "\n"}' FS='|' OFS='|' file.txt >>new_file.txt
给出错误的样本值-“在线比价20%折扣”

我如何处理这个问题?
错误-awk:printf语句中没有足够的参数|在线比价20%。

printf的第一个参数实际上是格式字符串,如果没有格式标志(
%
x)并且它是唯一的参数,它将按原样打印。除非您控制字符串,否则您应该始终为printf提供两个参数,正是出于这个原因,也就是说,为了防止在提供的字符串中出现格式化标志(预期或其他)。在您的情况下,将printf语句更改为

printf "%s", $1

你应该没事的

举例说明:

$ 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

请在您的问题中添加真实的输入数据和真实的相应输出……在完成上述更改后,现在脚本完全按照我的要求工作。谢谢你的及时回复。非常感谢。
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