使用 sed 或 awk、grep 删除字符串
Remove string using sed or awk, 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],
提前致谢!
使用 sed,只需:
sed 's/\[[^]]*,85.00\],[[:space:]]*//g' filename
这样,与正则表达式 \[[^]]*,85.00\],[[:space:]]*
匹配的所有内容都会被删除。正则表达式匹配 [
后跟任意数量的非 ]
字符,后跟 ,85.00],
和可选的空格;语法上唯一棘手的一点是 [^]]
字符集,它匹配除 ]
.
以外的所有字符
或者使用 awk:
awk -v RS='],' -v ORS='],' '!/,85.00$/' filename
这会将输入拆分为由 ],
分隔的记录,并仅打印那些不以 ,85.00
结尾的记录。
egrep -v '[^0-9]85\.00]' YourFile
删除(不为空)符合您的模式的行
我正在尝试查找并删除如下字符串:
[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],
提前致谢!
使用 sed,只需:
sed 's/\[[^]]*,85.00\],[[:space:]]*//g' filename
这样,与正则表达式 \[[^]]*,85.00\],[[:space:]]*
匹配的所有内容都会被删除。正则表达式匹配 [
后跟任意数量的非 ]
字符,后跟 ,85.00],
和可选的空格;语法上唯一棘手的一点是 [^]]
字符集,它匹配除 ]
.
或者使用 awk:
awk -v RS='],' -v ORS='],' '!/,85.00$/' filename
这会将输入拆分为由 ],
分隔的记录,并仅打印那些不以 ,85.00
结尾的记录。
egrep -v '[^0-9]85\.00]' YourFile
删除(不为空)符合您的模式的行