我怎样才能使用grep命令txt坐在两个字符串之间的文本?Linux:我怎么能grep文本从字符串到字符串
例如:
<--string 1-->
the text i need
<--string 2-->
在两个标签之间的“我需要文”是动态的,为此,我需要将从输出文本的命令“< --string 1 - >”到“ < --string 2 - >”关于维基
我怎样才能使用grep命令txt坐在两个字符串之间的文本?Linux:我怎么能grep文本从字符串到字符串
例如:
<--string 1-->
the text i need
<--string 2-->
在两个标签之间的“我需要文”是动态的,为此,我需要将从输出文本的命令“< --string 1 - >”到“ < --string 2 - >”关于维基
假设“我需要的文本”只是一行,你应该检查string1和string2出现(Alex的解决方案只检查一件事)。
一个更好的解决办法是:
grep -A 2 "string 1" $file | tail -2 | grep -B 1 "string 2" | head -1
你不能总是假设“我需要的文本”是一行 – 2014-08-25 14:00:06
grep word filename
检查grep的.. http://en.wikipedia.org/wiki/Grep
两个敲打之间的文本是动态的! – 2012-03-12 21:40:17
,如果你知道,‘我需要’的文本始终是高于还是低于总串1或字符串2,你可以使用grep -A 1 "string 1" $file | tail -1
或
工作!谢谢:) – 2012-03-12 21:49:33
这可能会为你工作:
grep -A2 "<--string 1-->" file | grep -v "<--string 1-->\|<--string 2-->"
或
grep -A1 "<--string 1-->" file | grep -v "<--string 1-->"
或在一个单一的过程:
sed '/<--string 1-->/,/<--string 2-->/!d;//d' file
或:
awk '/<--string 2-->/{p=0};p;/<--string 1-->/{p=1}' file
,我们需要知道什么是然后用头部和尾部,我们可以得到字符串1和字符串 之间的线路为字符串1和字符串 我们可以使用grep -n为 行号例如:
<--string 1-->
the text i need
<--string 2-->
start=$(cat file | grep -n <--string 1--> | grep -Eo [0-9]+)
finish=$cat file | grep -n <--string 2-->) | grep -Eo [0-9]+)
res=$((finish-start))
result=$(cat file | head -$start | tail -$res)
这是一个有点hacky,但它为我工作。
将“我需要的文字”总是一行还是更多? – 2012-03-12 21:52:55