我有一个包含多行文字的文件,类似于:
foo
1
2
3
bar
fool
1
2
3
bar
food
1
2
3
bar
到目前为止,以下内容给出了一个更接近的答案:
sed -n '/foo/,/bar/ p' file.txt | sed -e '$d'
...但如果它遇到像" food"或者"傻瓜"。我想让上面的代码只进行整个单词匹配(即grep -w),但插入\ b开关似乎不起作用:
sed -n '/foo/\b,/bar/ p' file.txt | sed -e '$d'
我想在" foo"之后打印任何东西。 (包括第一个foo)直到" bar",但仅匹配" foo",而不是" foo1"。
答案 0 :(得分:2)
使用正则表达式标记^
和$
分别表示行的开头和结尾:
sed -n '/^foo$/,/^bar$/ p' file.txt
答案 1 :(得分:0)
sed -n '/\<foo\>/,/\<bar\>/ p' file.txt
或者如果foo和bar必须是任何一行的第一个单词,可能就是这样。
sed -n '/^\<foo\>/,/^\<bar\>/ p' file