我正在使用sed
来提取文件中两个字符串之间的内容。我正在使用:
sed 's/^.*bbb //; s/ddd.*$//' '/Users/myName/Desktop/sedtest.txt'
,文件包含:
aaa bbb ccc ddd eee
more random text
…
当我使用上面的sed命令时,它成功提取ccc
但它也输出以下行。它输出:
ccc
more random text
…
但我只想输出:
ccc
如何修改命令以便仅输出ccc
?此外,我不会在运行时知道ccc
介于bbb
和ddd
之间
答案 0 :(得分:1)
试试这个:
grep bbb yourfile | grep ddd | sed yourcommand
这只会在包含“bbb”和“ddd”的行上运行。
答案 1 :(得分:1)
当sed可以轻松实现时,无需链接greps。
sed 's/^.*bbb\(.*\)ddd.*$/\1/;t a;d;:a' /Users/myName/Desktop/sedtest.txt
答案 2 :(得分:1)
此awk
应该:
awk '/bbb.*ddd/ {gsub(/.*bbb | ddd.*/,x);print}' file
ccc
它仅选择bbb
和ddd
行。然后移除所有bbb
和ddd
答案 3 :(得分:0)
sed 's/^.*bbb\(.*\)ddd.*$/|\1|/' /tmp/file.txt | grep '^|' | cut -d\| -f2