Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Regex 查找并用sed替换每秒发生的事件_Regex_Bash_Replace_Sed - Fatal编程技术网

Regex 查找并用sed替换每秒发生的事件

Regex 查找并用sed替换每秒发生的事件,regex,bash,replace,sed,Regex,Bash,Replace,Sed,大家好,我有下面的代码 找到-类型f-执行sed-i's@EText-编号@New-EText-No.@g'{}+ 我一直在使用脚本查找和替换文件夹和子文件夹中多个文件中的某些字符。 我发现有些值出现两次以上。因此,我需要修改脚本以仅替换属性的第二个实例 找到-键入f-exec sed-i'/Subject/{:a;N;/Subject.*Subject/!Ta;s/Subject/SecondSubject/2;}/g'{}+ 我正在尝试使用上面的代码来实现这一点。。但它似乎不起作用。我需要修

大家好,我有下面的代码

找到-类型f-执行sed-i's@EText-编号@New-EText-No.@g'{}+

我一直在使用脚本查找和替换文件夹和子文件夹中多个文件中的某些字符。 我发现有些值出现两次以上。因此,我需要修改脚本以仅替换属性的第二个实例

找到-键入f-exec sed-i'/Subject/{:a;N;/Subject.*Subject/!Ta;s/Subject/SecondSubject/2;}/g'{}+

我正在尝试使用上面的代码来实现这一点。。但它似乎不起作用。我需要修改代码,将“@”作为一个单独的代码来使用,就像上面的代码一样。因为我的文件中有反冲字符。 你知道我如何使代码工作并使用sperator@

谢谢你的帮助

处理前的原始文件

主体国家——传记主体美国——短篇小说文本第24200号发布日期2008-01-07

后处理

主体国家——传记第二主体国家——短篇小说etext-No.24200发布日期2008-01-07

请注意,第二个主题已从“主题”更改为“第二主题”

请尝试以下操作:

sed -i '/Subject/{:a;s/\(Subject.*\)Subject/\1SecondSubject/;tb;N;ba;:b}'
如果追加到模式空间的行(使用N命令)包含多个单词“Subject”的匹配项,则可以使用此命令仅针对追加行的第一个匹配项(模式空间的第二个匹配项):

试试这个:

sed -i '/Subject/{:a;s/\(Subject.*\)Subject/\1SecondSubject/;tb;N;ba;:b}'
如果追加到模式空间的行(使用N命令)包含多个单词“Subject”的匹配项,则可以使用此命令仅针对追加行的第一个匹配项(模式空间的第二个匹配项):


find-类型f-执行sed-i's@Subject@{:a;N;/Subject.*Subject/!Ta;s/Subject/SecondSubject/2;}@g'{}+
修复标题或文本。你想“每秒替换一次”还是“只替换第二个实例”?谢谢Cyrus我需要每秒替换一次Hi-Udy。。你的代码不起作用。。它将Subject替换为“{:a;N;/Subject.*Subject/!Ta;s/Subject/SecondSubject/2;}”,请在问题中添加示例输入和该示例输入所需的输出。
find-类型f-执行sed-i's@Subject@{:a;N;/Subject.*Subject/!Ta;s/Subject/SecondSubject/2;}@g'{}+
修复标题或文本。你想“每秒替换一次”还是“只替换第二个实例”?谢谢Cyrus我需要每秒替换一次Hi-Udy。。你的代码不起作用。。它将Subject替换为“{:a;N;/Subject.*Subject/!Ta;s/Subject/SecondSubject/2;}”请将示例输入和该示例输入的所需输出添加到问题中。这是添加子文件夹处理“find”后的代码外观-类型f-exec sed-i'/Subject/{:a;s/(Subject.*)Subject/\1SecondSubject/;tb;N;ba;:b}{}+'Hi Casimir。此脚本有问题。。在最多有3个主题实例的情况下。脚本正在替换第三个脚本。例如。我只需要脚本来替换第二个实例。有什么想法吗?再次谢谢你。。您是一个天才这是添加子文件夹处理“find”后代码的样子-类型f-exec sed-i'/Subject/{:a;s/(Subject.*)Subject/\1SecondSubject/;tb;N;ba;:b}{}+'Hi Casimir。此脚本有问题。。在最多有3个主题实例的情况下。脚本正在替换第三个脚本。例如。我只需要脚本来替换第二个实例。有什么想法吗?再次谢谢你。。你是个天才