如果我有:
"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
标签:bash,linux,awk,sed
来源: https://codeday.me/bug/20191011/1891010.html