使用此命令,我可以在每行之前添加"
。如何在使用awk的每一行之前添加'?
awk '{print "\""$0}' file
但我想補充的'
代替"
,爲什麼這個命令不起作用?
awk '{print "\'"$0}' file
使用此命令,我可以在每行之前添加"
。如何在使用awk的每一行之前添加'?
awk '{print "\""$0}' file
但我想補充的'
代替"
,爲什麼這個命令不起作用?
awk '{print "\'"$0}' file
絕對不能在單引號分隔的腳本中使用單引號,因爲引用絕對錶示該腳本[segment]的結尾。你的選項有:
{print "'"$0}
和執行:awk -f foo file
,或\047
無處不在,你想打印報價:awk '{print "\047"$0}' file
,或awk -v q=\' '{print q$0}' file
,或awk '{print "'\''"$0}' file
上面的最終名單產品awk腳本('{print "'
和'"$0}'
)實際上2個獨立片段在中間(\'
)有點殼等等結果是連接那些通過shell傳遞到awk
命令執行,你得到你想要的。
FWIW如果您的腳本超過幾行,「2」或「3」,我會使用「1」,否則以「3」作爲我的個人偏好,但YMMV。我不會做4或5.
做這將是正確的做法:
$ awk -v c="'" '{print c$0}' file
可能是這樣?
awk 'sub(/^/,"\x27")'
如果你喜歡print
:
awk '{print "\x27"$0}'
一種解決方案是隻使用ASCII碼爲'
:
$ awk '{print "\047"$0}' file
或者使用sed
:
sed -e "s/^/\'/" file
+1因爲這是我們應該如何真正做到這一點。 – 2013-05-10 18:57:24
爲了有一個'
在bash一個'
-delimited字符串中是有點棘手:
你必須終止'
-string,則必須把'
的報價方式,然後重新啓動'
-string :
echo 'ab'\''cd'
將打印
ab'cd
,並且將這一知識用於您的命令,你需要
awk '{print "'\''"$0}' file
相同的原則:你想
{print "'"$0}
,並有在'
分裂。所以,你得到2個部分:{print "
和"$0}
具有被封閉在'
和 「加盟」 與\'
:
'{print "'\''"$0}'
試試這個:
awk '$0="'\''"$0'<<XXX
one
two
three
XXX
輸出:
'one
'two
'
'three
由於它不是由awk
處理的,所以對於呼叫外殼應該轉義字符'
。所以首先它必須關閉(第二個'
),然後在shell中跳過(\'
),然後再次打開(第4個'
)。
+1爲巧妙的方法 – 2013-05-10 18:51:18