Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sed搜索替换模式(bash)_Bash_Search_Replace_Sed_Design Patterns - Fatal编程技术网

Sed搜索替换模式(bash)

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

下面是我在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和}之间的文本会有所不同,因此我需要选择所有内容

下面是我现在使用的代码:

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文件的经验是它不喜欢引号。。。