这个问题已经在这里有了答案: > How to select lines between two marker patterns which may occur multiple times with awk/sed 9个
> How to print lines between two patterns, inclusive or exclusive (in sed, AWK or Perl)? 7个
所以我在deleting the text between two patterns和printing the text between two delimiters上找到了很多东西,但是在使用bash函数在两个模式之间打印文本时,我什么都没找到.
如果我有:
"Alas poor Yorik, I knew him well"
并且我想打印介于“ poor”和“ well”(不包括)之间的所有内容,我将得到:
" Yorik, I knew him "
如何使用sed或awk之类的方法实现此目的?
解决方法:
dtpwmbp:~ pwadas$echo "Alas poor Yorik, I knew him well" | sed -e 's/^.*poor //g;s/ well.*$//g'
Yorik, I knew him
dtpwmbp:~ pwadas$echo "Alas poor Yorik, I knew him well" | awk '{sub(/.*poor /,"");sub(/ well.*/,"");print;}'
Yorik, I knew him
dtpwmbp:~ pwadas$echo "Alas poor Yorik, I knew him well" > infile
dtpwmbp:~ pwadas$cat infile
Alas poor Yorik, I knew him well
dtpwmbp:~ pwadas$cat infile | sed -e 's/^.*poor //g;s/ well.*$//g'
Yorik, I knew him
dtpwmbp:~ pwadas$sed -e 's/^.*poor //g;s/ well.*$//g' < infile
Yorik, I knew him
dtpwmbp:~ pwadas$cat infile | awk '{sub(/.*poor /,"");sub(/ well.*/,"");print;}'
Yorik, I knew him
dtpwmbp:~ pwadas$awk '{sub(/.*poor /,"");sub(/ well.*/,"");print;}' < infile
Yorik, I knew him
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。