2

したがって、2つのパターン間のテキストの削除と、 2つの区切り文字間のテキストの印刷については多くのことを発見しましたが、bash関数を使用して2つのパターン間のテキストを印刷することについては何も見つかりませんでした。

私が持っている場合:

"Alas poor Yorik, I knew him well"

そして、「poor」と「well」(排他的)のパターンの間のすべてを印刷したいと思います。

" Yorik, I knew him "

sedやawkのようなものを使用してこれをどのように達成できますか?

4

1 に答える 1

5
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
于 2012-09-15T23:01:15.417 に答える