如何用引号括起这个输出?

如何用引号括起这个输出?

我有以下命令,它可以满足我的 99% 的要求:

root@CA2UA5232QPZ:/# tail -3 newtag | awk '{print $1}'
v1.0.20170512.1
v1.0.20170712.1
v1.0.20170712.2
root@CA2UA5232QPZ:/#

但我需要对其进行调整,以便输出如下所示:

'v1.0.20170512.1'
'v1.0.20170712.1'
'v1.0.20170712.2'

答案1

您可以将输出传输至sed

tail -3 newtag| awk '{print $1}'| sed "s/^/'/;s/$/'/"

答案2

这里有可怕的外壳引用这些

awk '{print "'"'"'" $1 "'"'"'"}'
awk '{print "'\''" $1 "'\''"}'

或者使用奇数输出字段分隔符

awk -v OFS="'" '{print "", $1, ""}'

但这也不算太糟

awk -v q="'" '{print q $1 q}'

答案3

另一种方法是使用十六进制 ASCII 码'

tail -3 newtag | awk '{print "\x27" $1 "\x27" }'

答案4

1.一次通过sed

tail -3 newtag | sed "s/\(\S*\).*/'\1'/"

解释:sed替换字符串中的

2.或者你可以使用perl

tail -3 newtag | perl -anE "say qq('\$F[0]')"

解释:

  • perl擅长文本处理的脚本语言
  • -a按字段拆分每一行
  • n不自动打印每一行
  • E执行以下命令,并启用以下功能:say
  • "因为"我们稍后要使用'
  • say打印以下表达式和换行符
  • qq(允许变量插值的文字表达式的开始
  • '文字'
  • \$F[0]行上的第一个“字段”
  • '文字'
  • )文字表达式的结束
  • "指令结束

相关内容