Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/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
Bash 如何使用sed搜索每两行中的短语_Bash_Search_Sed - Fatal编程技术网

Bash 如何使用sed搜索每两行中的短语

Bash 如何使用sed搜索每两行中的短语,bash,search,sed,Bash,Search,Sed,我想在文档中搜索一个短语。 但也许这个短语被分成了两行。 所以我想做的是: 搜索: 第1行和第2行 第2行和第3行 第3行和第4行 我是初学者,我想练习使用sed。 那么,我该如何处理sed呢? 有什么想法吗 这是行不通的 $ sed 'N;s/line2.line3/line23/' test.txt line1 line2 line3 line4 line5 1sed读取第一行和第二行,然后搜索。 2 SED读取第三行和第四行,然后搜索。 ...... 因此,如果第2行和第3行中的短语

我想在文档中搜索一个短语。 但也许这个短语被分成了两行。 所以我想做的是: 搜索: 第1行和第2行 第2行和第3行 第3行和第4行

我是初学者,我想练习使用sed。 那么,我该如何处理sed呢? 有什么想法吗

这是行不通的

$ sed 'N;s/line2.line3/line23/' test.txt 
line1
line2
line3
line4
line5
1sed读取第一行和第二行,然后搜索。 2 SED读取第三行和第四行,然后搜索。 ...... 因此,如果第2行和第3行中的短语,我将错过它。 我能读上一行吗

更新

谢谢@Beta的帮助

它起作用了。但我还是有点困惑。 还有一些问题

我已经看过手册了

n:将下一行输入读入模式空间。 N:将下一行输入追加到模式空间。 d:删除模式空间。开始下一个周期。 D:最多删除模式空间中的第一条嵌入换行符。开始下一个循环,但如果模式空间中仍有数据,则跳过从输入读取

1读取第一行和第二行,然后打印第一行。 2sed清空其图案空间,然后读取第三行和第四行,然后打印第三行。 我说得对吗

sed -n 'N;P;D' test.txt 
1读取第一行和第二行,然后打印第一行。 2sed不清空其图案空间,然后读取第三行,然后打印第二行。 我说得对吗

sed -n 'N;P;D' test.txt 
为什么下一行在命令N和上述两个命令N中有不同的行为?


另外,我想是美元!没有必要。

有多种方法可以做到这一点。这与您所尝试的非常接近:

sed '$!N;s/line2.line3/line23/;P;D;'

做这件事的方法不止一种。这与您所尝试的非常接近:

sed '$!N;s/line2.line3/line23/;P;D;'

给出一些输入文件和预期输出的例子,多行中有断句…给出一些输入文件和预期输出的例子,多行中有断句…非常感谢。但我仍然对n,n和D有点困惑。我更新了我的问题。你能再帮我一次吗?附言:我想是美元!在你提供的命令中没有必要。非常感谢。但我仍然对n,n和D有点困惑。我更新了我的问题。你能再帮我一次吗?附言:我想是美元!在您提供的命令中,不需要。
sed '$!N;s/line2.line3/line23/;P;D;'