Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
Linux中从一个字符串到另一个字符串的搜索_Linux_Bash_Shell_Grep - Fatal编程技术网

Linux中从一个字符串到另一个字符串的搜索

Linux中从一个字符串到另一个字符串的搜索,linux,bash,shell,grep,Linux,Bash,Shell,Grep,我试图找到一种从文本中的一个字符串搜索到另一个字符串的方法 Lorem ipsum dolor sitamet,是一位杰出的献身者。Phasellus massa nulla,lobortis坐在amet Placelat hendrerit,mollis Qus nulla。莫比·康塞特图、奥迪·韦尔朗库斯·尤伊斯莫、努克·尼西·尤伊斯莫、维塔·莫莱斯蒂·努拉·努拉·努拉·努尔 维瓦摩斯·埃吉特·弗罗恩姆(Vivamus eget fermentum lorem)是一家酒厂,它是一家酒厂。大苦

我试图找到一种从文本中的一个字符串搜索到另一个字符串的方法

Lorem ipsum dolor sitamet,是一位杰出的献身者。Phasellus massa nulla,lobortis坐在amet Placelat hendrerit,mollis Qus nulla。莫比·康塞特图、奥迪·韦尔朗库斯·尤伊斯莫、努克·尼西·尤伊斯莫、维塔·莫莱斯蒂·努拉·努拉·努拉·努尔

维瓦摩斯·埃吉特·弗罗恩姆(Vivamus eget fermentum lorem)是一家酒厂,它是一家酒厂。大苦瓜。佩伦特式居住者morbi tristique Sentecus et netus et malesuada以turpis egestas闻名

这是我的生命。没有尊严,没有尊严。他是自由的奴隶,自由的奴隶,自由的奴隶,自由的奴隶,自由的奴隶。我是维利特·莫里斯

我想知道,在命令行中,是否有一种方法可以找出上面段落中粗体字之间的内容。
我尝试过grep的不同变体,但没有成功。

您可以使用正则表达式

grep -e 'amet .* tellus' yourfile

其中,
匹配除换行符以外的任何字符,
*
表示0次或更多次。

您可以使用参数替换

#!/bin/bash

string=$( <dat/lorem.txt )
tmp=${string#*amet}
tmp=${tmp%tellus*}

echo $tmp
#/bin/bash
string=$(使用sed进行此操作:

sed -n '/amet/,/tellus/p' atext.txt | sed 's/.*amet/amet/;s/tellus.*/tellus/'
输出应如下所示:

amet ...(everything in between)...tellus
第一个sed删除所有行,除了包含单词amet和tellus的行,以及中间的所有行

第二个sed通过一个sed命令删除amet之前的所有单词,以及tellus之后的所有单词

sed -n ':a;$!{N;ba};s/.*\(amet.*tellus\).*/\1/p' infile

amet placerat hendrerit, mollis quis nulla. Morbi consectetur, odio vel rhoncus euismod, nunc nisi euismod ante, vitae molestie ante nulla non est.

Vivamus eget fermentum lorem, sed suscipit nulla. Aliquam consequat ultrices maximus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

Etiam vitae tortor quis lectus convallis ullamcorper. Nullam nec dignissim tellus
如果您不需要输出中的关键字:

sed -n ':a;$!{N;ba};s/.*amet\(.*\)tellus.*/\1/p' infile

 placerat hendrerit, mollis quis nulla. Morbi consectetur, odio vel rhoncus euismod, nunc nisi euismod ante, vitae molestie ante nulla non est.

Vivamus eget fermentum lorem, sed suscipit nulla. Aliquam consequat ultrices maximus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

Etiam vitae tortor quis lectus convallis ullamcorper. Nullam nec dignissim

样本数据都是一行的,还是被换行符打断了?如果都是一行就简单,否则就不那么简单了。另外,请包括一些
grep
尝试,否则我们会猜测。祝你好运。我尝试了grep-e'amet.*tellus'myfile,但它不起作用。我忘了提到中间有新行t但是我忘了提到字符串之间有新行。你试过你的答案吗?我从未见过一个以文件名为第一个参数的
grep
。祝大家好运。是的,我以前试过,它成功了。但是你是对的,正如手册页所说(
grep[OPTIONS][e PATTERN |-f FILE][FILE…])
)该文件位于最后。但它也可以将该文件作为第一个参数使用
sed -n ':a;$!{N;ba};s/.*amet\(.*\)tellus.*/\1/p' infile

 placerat hendrerit, mollis quis nulla. Morbi consectetur, odio vel rhoncus euismod, nunc nisi euismod ante, vitae molestie ante nulla non est.

Vivamus eget fermentum lorem, sed suscipit nulla. Aliquam consequat ultrices maximus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

Etiam vitae tortor quis lectus convallis ullamcorper. Nullam nec dignissim