6

例子:

输入 =

This is an example text with    some      spaces. 
This should be 2nd line.
However the spaces between "quotes    should not    change".
last line.

输出 =

Thisisanexampletextwithsomespaces. 
Thisshouldbe2ndline.
Howeverthespacesbetween"quotes    should not    change".
lastline.
4

3 回答 3

5
awk '
    BEGIN {FS = OFS = "\""}
    /^[[:blank:]]*$/ {next}
    {for (i=1; i<=NF; i+=2) gsub(/[[:space:]]/,"",$i)} 
    1
' 
Thisisanexampletextwithsomespaces.
Thisshouldbe2ndline.
Howeverthespacesbetween"quotes    should not    change".
lastline.
于 2013-06-25T16:35:11.870 回答
3

GNU 示例:

$sed -r 's/(\".*\")|\s*/\1/g' 文件
这是一个带有一些空格的示例文本。
这应该是第二行。
然而,“引号之间的空格不应改变”。
最后一行。
于 2013-06-25T22:12:54.853 回答
2

可以使用 perl 完成:

perl -pe 's{^\s*\n$}{}; s/ +(?=(([^"]+"){2})*[^"]*$)//g' file

这将删除所有空白行或只有 0 个或多个空格的行,并在不在双引号之间时修剪空格。

现场演示:http: //ideone.com/xizPNI

于 2013-06-25T16:29:25.270 回答