2012-12-13 193 views
2

我正在尝试在awk中编写一个脚本,(其中包括)用两个连续的双引号替换所有双引号实例。但由于某种原因,我似乎无法妥善避免我的双引号。使用gsub将双引号替换为两个双引号?

因此,例如:

Mary had a "little" lamb 

将成为

Mary had a ""little"" lamb 

感谢好心!

回答

3

你可以这样说:

echo 'Mary had a "little" lamb' | awk '{ gsub(/"/, "&&") } 1' 

输出:

Mary had a ""little"" lamb 

1末调用awk的默认块{ print $0 }

它甚至与SED短:

echo 'Mary had a "little" lamb' | sed 's/"/&&/g' 
+0

嗯,这很有趣。作为一个更一般的AWK问题,AWK是否将整个文件缓冲到内存中,然后采取行动,还是仅以每行为基础运行?我想我想说的是,昂贵的记忆方式? (我现在还不能批准你的答案 - 我必须等5分钟。) – Waffles

+1

@ user1116858:awk只在内存中保存一条记录,默认情况下记录是一条线。 – Thor

+0

非常感谢! – Waffles