Bash 如何添加';在每行使用awk之前?
使用此命令,我可以在每行之前添加Bash 如何添加';在每行使用awk之前?,bash,awk,Bash,Awk,使用此命令,我可以在每行之前添加“ awk '{print "\""$0}' file 但是我想添加“而不是”,为什么这个命令不起作用 awk '{print "\'"$0}' file 正确的方法是: $ awk -v c="'" '{print c$0}' file 可能是这样吗 awk 'sub(/^/,"\x27")' 如果您喜欢打印: awk '{print "\x27"$0}' 一种解决方案是只对“”使用ASCII码: $ awk '{print "\047"$0}' fi
“
awk '{print "\""$0}' file
但是我想添加“
而不是”
,为什么这个命令不起作用
awk '{print "\'"$0}' file
正确的方法是:
$ awk -v c="'" '{print c$0}' file
可能是这样吗
awk 'sub(/^/,"\x27")'
如果您喜欢打印:
awk '{print "\x27"$0}'
一种解决方案是只对
“
”使用ASCII码:
$ awk '{print "\047"$0}' file
或者使用
sed
:
sed -e "s/^/\'/" file
在bash中,在
'
分隔的字符串中包含'
,这有点棘手:
您必须终止'
-字符串,然后将'
置于引号中,然后重新启动'
-字符串:
echo 'ab'\''cd'
将打印
ab'cd
并且,将这些知识应用到您的命令中,您需要
awk '{print "'\''"$0}' file
同样的原则:你想要什么
{print "'"$0}
并且必须在处拆分。因此,您得到了两个部分:{print”
和“$0}
,它们必须包含在'
中,并用\
连接起来:
'{print "'\''"$0}'
试试这个:
awk '$0="'\''"$0'<<XXX
one
two
three
XXX
应为调用shell转义字符”
,因为它是由它而不是由awk
处理的。因此,首先必须将其关闭(第二个'
),然后在shell中转义(\'
),然后再次打开(第四个'
)。您绝对不能在单引号分隔的脚本中使用单引号,因为该引号绝对表示该脚本[段]的结尾。您可以选择:
将脚本作为{print“'”$0}
放入文件“foo”中,并作为以下文件执行:awk-f foo file
,或
在要打印引号的任何地方使用转义序列\047
:awk'{print”\047“$0}”文件
,或
将引号保存在变量中:awk-v q=\'{print q$0}文件
,或
用双引号而不是单引号分隔awk脚本,并转义shell可能关心的任何内容:awk“{print\”'\$0}”文件
退出awk并返回shell,只需获取以下引号:awk'{print'\'''''''$0}'文件
上述最后的列表项实际上是AWK脚本(<代码>){打印“< /代码>和<代码>”“$ 0 }”/代码>的2个单独的段,中间有一个shell(<代码> \\代码>),因此当最终结果是通过shell传递到AWK< /Cord>命令执行时,您就可以得到您想要的。
FWIW如果你的脚本超过几行,我会用“1”,否则用“2”或“3”,而“3”是我个人的偏好,但是YMMV。我不会做4或5次
'one
'two
'
'three