我想使用正则表达式在文件中查找特定的文本区域。然后,仅在这些区域,我想执行多个更改,即将所有内容更改为小写,然后删除以下字符[.,\]。经过多次尝试和错误,我得出了以下结论:
sed -r -E -i '/^((#)([0-9]+.[0-9]+){1}(.)+())/s|[.,/]||g; s|[A-Z]|L&|g' filename
但是这些更改将应用于整个文件。有什么想法吗?一般来说,我如何简化内联更改,即使用上一个更改的输出并应用新的更改(可能将其提供给另一个(?或者这不是应该怎么做?
这可能对你有用(GNU sed(:
sed 's#foo#n&n#g
s#.*#echo '''&'''|sed '''/^foo$/{s/bar/baz/;s/qwe/rty/g}'''#e
s#n##g' file
在每一行和整个文件中,用换行符将require match括起来。
在每一行中应用第二个与匹配完全一致的sed调用,然后对随后匹配的模式应用特定或全局替换。
在每一行处理完成之前,移除换行符并打印结果。