如何添加" '和#34;在命令awk

时间:2014-12-01 21:27:46

标签: bash shell awk sh

如何使用awk添加文件的输出,如下所示:

像:

cat /tmp/lista_table_vertical.txt  | awk '{print "major_compact " $1}'
major_compact game_activities
major_compact interatividade_activities
major_compact testeCompression
major_compact testeCompression2
major_compact testeSlowQuery
major_compact users_algorithms
major_compact users_algorithms2

我想插入"'"在开始和结束时。 例如:

major_compact 'game_activities'
major_compact 'interatividade_activities'
major_compact 'testeCompression'
major_compact 'testeCompression2'
major_compact 'testeSlowQuery'
major_compact 'users_algorithms'
major_compact 'users_algorithms2'

感谢。

3 个答案:

答案 0 :(得分:5)

一种解决方案是使用ascii表示:

\047

检查

man ascii

最后:

awk '{print "major_compact \047" $1 "\047"}' /tmp/lista_table_vertical.txt

另一个(可能难以记住和阅读)解决方案:

awk 'BEGIN{print "major_compact '\''" $1 "'\''"}' /tmp/lista_table_vertical.txt

答案 1 :(得分:2)

您可以使用:

awk -v sq="'" '{print "major_compact " sq $1 sq}' /tmp/lista_table_vertical.txt

即。将单引号作为变量传递给awk并在任何地方使用var name。

PS:您也不需要使用不必要的cat

答案 2 :(得分:2)

如果您要多次执行此操作,最简单的方法是创建一个包含以下内容的script.awk文件:

{ printf "major_compact '%s'\n", $1 }

然后运行

awk -f script.awk /tmp/lista_table_vertical.txt

这样做可以避免在shell命令行中转义引号的所有混乱。如果您只需要输入一次,那么其他答案中的其中一个单行将为您工作正常(但这可能更容易在第一时间正确,即使如此 - 如果您有为了使它正确,你必须以某种形式或形式,不止一次地输入它。