微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux-使用sed在两种模式之间进行打印

这个问题已经在这里有了答案:            >            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 patternsprinting 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] 举报,一经查实,本站将立刻删除。

相关推荐