使用sed或awk,grep删除字符串

时间:2015-03-05 11:26:39

标签: string awk sed grep

我正在尝试查找和删除字符串,如:

[1126604244001,85.00],  [1122204245002,85.00], [1221104246003,85.00],
[1222204247004,85.00], [1823304248005,85.00], [1424404249006,85.00],

85.00 =常数。我的意思是[xxxxxxxxxxxxx, 85.00 ],

在记事本中++很简单:

find: "[^........].............,85.00]" and replace:""

我喜欢使用awk或sed自动删除字符串而不将其导入到记事本++。

好的,我有文件

TEMP.TXT

[1126604244001,17.00], [1126604244001,17.00], [1126604244001,17.00],
[1126604244001,85.00],  [1122204245002,85.00], [1221104246003,85.00],
    [1222204247004,85.00], [1823304248005,85.00], [1424404249006,85.00], [1126604244001,17.00], [1126604244001,17.00],

我的愿望输出

TEMP.TXT

[1126604244001,17.00],[1126604244001,17.00],[1126604244001,17.00],[1126604244001,17.00],[1126604244001,17.00],
提前谢谢!

2 个答案:

答案 0 :(得分:2)

使用sed,只需:

sed 's/\[[^]]*,85.00\],[[:space:]]*//g' filename

这样,删除了与正则表达式\[[^]]*,85.00\],[[:space:]]*匹配的所有内容。正则表达式匹配[后跟任意数量的非]字符,后跟,85.00],和可选空格;唯一的语法难点是[^]]字符集,它匹配]以外的所有字符。

或者使用awk:

awk -v RS='],' -v ORS='],' '!/,85.00$/' filename

这会将输入拆分为],分隔的记录,并仅打印那些不以,85.00结尾的记录。

答案 1 :(得分:0)

egrep -v '[^0-9]85\.00]' YourFile

使用您的模式删除(非空)行