首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用awk命令处理文件中的% symbol

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

Stack Overflow用户
提问于 2017-08-28 17:15:58
回答 1查看 272关注 0票数 1

我正在使用这个命令

代码语言:javascript
运行
复制
awk '{printf $1; for (i=2;i<=10;i++) {printf OFS $i} printf "\n"}' FS='|' OFS='|' file.txt >>new_file.txt

如果记录在文件中没有任何%符号,它就可以正常工作。

我的要求:

代码语言:javascript
运行
复制
Input:
A|B|C|D|E
A|B
Output:
A|B|C|D|E|||||
A|B||||||||

给出错误的样本值-“在线价格匹配的20%折扣”

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

EN

回答 1

Stack Overflow用户

发布于 2017-08-28 18:02:34

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

代码语言:javascript
运行
复制
printf "%s", $1

代码语言:javascript
运行
复制
printf "%s", OFS $i

你应该会好起来的。

举个例子:

代码语言:javascript
运行
复制
$ 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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45915606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档