Sed搜索替换模式(bash)
下面是我在sed中使用的一些示例文本(在bash、centos中)。我把课文分成了几行,以便阅读但是下面的文本通常都在一行。 一些文本 (Abc|U 3.7 |自动检测|“}{\fldrslt \普通\f2\fs20\cf2 3:7}}\plain \f2 \fs20 Xyz|U 3.16 |自动检测|“}{\fldrslt \普通\f2\fs20\cf2 16}}\plain \f2 \fs20更多文本 Qr|U 3.11 |自动检测|“}{\fldrslt \普通\f2\fs20\cf2 11}}\plain \f2\fs20什么的 我想从每个条目中删除:|AUTODETECT |“}{\fldrslt\plain\f2\fs20\cf2 3:7} \plain和}之间的文本会有所不同,因此我需要选择所有内容 下面是我现在使用的代码:Sed搜索替换模式(bash),bash,search,replace,sed,design-patterns,Bash,Search,Replace,Sed,Design Patterns,下面是我在sed中使用的一些示例文本(在bash、centos中)。我把课文分成了几行,以便阅读但是下面的文本通常都在一行。 一些文本 (Abc|U 3.7 |自动检测|“}{\fldrslt \普通\f2\fs20\cf2 3:7}}\plain \f2 \fs20 Xyz|U 3.16 |自动检测|“}{\fldrslt \普通\f2\fs20\cf2 16}}\plain \f2 \fs20更多文本 Qr|U 3.11 |自动检测|“}{\fldrslt \普通\f2\fs20\cf2 1
s/|AUTODETECT|\"}{\\fldrslt \\plain .*}}/ /g;
问题。I预计结果为:
Abc_3.7 \plain \f2\fs20 Xyz_3.16 \plain \f2\fs20 more text, Qr_3.11 \plain \f2\fs20 something
但实际结果是:
Abc_3.7 \plain \f2\fs20
*
是贪婪的,它匹配从“普通”后的第一个数据到最后一对大括号的所有内容,包括其他自动检测等。您需要更精细(不那么贪婪)的模式:
“[^}]*
”部分匹配除“}”(和换行符)之外的任意序列
如果脚本需要放入文件中,则sed脚本文件包含:
s/|AUTODETECT|"}{\\fldrslt \\plain [^}]*}}/ /g
调用变成:
sed -f sed.script "$@"
基本上,除了单引号以外的所有内容都会进入脚本文件。使用单引号的优点之一是不用担心转义。只有当脚本必须包含单引号时,才会遇到任何问题。该
*
非常贪婪,从“普通”之后的第一个数据到最后一对大括号,包括其他自动检测等。您需要更精细(不那么贪婪)的图案:
“[^}]*
”部分匹配除“}”(和换行符)之外的任意序列
如果脚本需要放入文件中,则sed脚本文件包含:
s/|AUTODETECT|"}{\\fldrslt \\plain [^}]*}}/ /g
调用变成:
sed -f sed.script "$@"
基本上,除了单引号以外的所有内容都会进入脚本文件。使用单引号的优点之一是不用担心转义。只有当脚本必须包含单引号时,您才会遇到任何问题。哇,谢谢,效果很好。我如何修改您的代码以将其放入.sed文件?我的经验到目前为止,我对sed文件的理解是它不喜欢引号…哇,谢谢,效果很好。我如何修改你的代码以将其放入我的.sed文件中?我对sed文件的经验是它不喜欢引号。。。