下面的awk有什么问题

时间:2013-05-11 23:50:51

标签: linux bash unix awk

awk -F ',' '$2 ~ /^ *[0-9]*(\.[0-9]+)?" *$/{sub(/"/, "\n", $2);}' sample.txt > out.txt

大家好,

上面的awk命令出了什么问题,我只得到空文件。 向[{3}}

致敬

sample.txt的:

3",3"
6-position,6-position
7' 4" to 10' 3-1/2",7' 4" to 10' 3-1/2"
4.8",4.8"
Adjustable from 99" to 111" - max 148,Adjustable from 99" to 111" - max 148

预期产出是,

output.txt的:

3",3
6-position,
7' 4" to 10' 3-1/2",
4.8",4.8
Adjustable from 99" to 111" - max 148,

2 个答案:

答案 0 :(得分:0)

查看数据没有什么"错误"使用你的awk语句,只是你的正则表达式与你的一个输入不匹配。

答案 1 :(得分:0)

  

下面的awk有什么问题

     

awk -F',''$ 1~ / ^ [0-9] (。[0-9] +)?“* $ / {sub(/”/,“\ n “,$ 1);}'   sample.txt> out.txt

直接回答你的问题:

假设正则表达式部分是正确的。你做了替换,但没有打印/输出任何东西。所以你会得到一个空的out.txt

修改

根据您的示例添加一个有效的awk解决方案:

kent$  awk -F, -v OFS="," '{if($2~/^[0-9.]+"$/)sub(/"/,"",$2);else $2=""}1' file
3",3
6-position,
7' 4" to 10' 3-1/2",
4.8",4.8
Adjustable from 99" to 111" - max 148,