【问题标题】:How do I add single quotes into my awk command output?如何在 awk 命令输出中添加单引号?
【发布时间】:2016-08-29 15:45:57
【问题描述】:

我正在使用 Mac Yosemite,bash shell。我想在我的输出中输出单引号,我尝试了几件事,但没有成功……

awk -F, '{OFS=",";print ''$1'',$4,$6,$7}' my_list.csv

awk -F, '{OFS=",";print "'"$1"'",$4,$6,$7}' my_list.csv

这些都没有将单引号添加到我的输出中。我怎样才能做到这一点?

【问题讨论】:

  • edit 您的问题包括简洁、可测试的样本输入和预期输出,以便我们开始为您提供帮助,否则我们只是在猜测......

标签: bash shell awk escaping


【解决方案1】:

使用变量是一种方法:

kent$ echo "a b c"|awk -v q="'" '$1=q$1q'
'a' b c

或者你选择转义方式:

kent$ echo "a b c"|awk '$1="'\''"$1"'\''"'
'a' b c

我更喜欢第一个。

【讨论】:

  • variable 方法更简洁,更不容易出错++
【解决方案2】:

你也可以使用八进制代码:

# octal code 047 for '
awk -F, -v OFS=, '{print "\047" $1 "\047", $4, $6, $7}' my_list.csv

【讨论】:

  • 嗨,我尝试了这个语句的转义 -- awk -F, '{OFS=",";print $1, u.id, u.first_Name, u.last_name, u.url FROM用户 u, user_role ur where u.id = ur.user_id and lower(ur.role_id) = "\x27"$4"\x27",$4,$6,$7}' my_list.csv 但收到错误“awk: syntax error在源代码行 1"。
  • 运行awk '{ print "\047" $0 "\047" }' <<< "123"时得到什么输出?
  • Mike - 你认为u.id 是什么意思?不管它是什么 - 不,这并不意味着,因此语法错误。不确定您希望评论中的代码做什么,但这不是 awk 语法。
  • 嗯,对了,现在我记得为什么应该避免使用十六进制代码了。
猜你喜欢
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 2013-10-28
  • 2013-01-03
  • 2022-01-04
相关资源
最近更新 更多