一致する単語だけでなく、行全体を出力したいです。
ファイル.txt
Name Surname Class Best-Lesson
1.Nick Fras Mat Chemic
2.Cris Fras Chemic Mat
3.Dani Cris Philos Physical
4.Quar Qand Dani Cris
これは全体的に欲しい
grep parameters Dani Chris
output: 3.Dani Cris Philos Physical
私はこれをしたくない(-oを使用)
Dani Cris
答え1
OPのコメントによると、このgrepはOPが望む結果を生成できるはずです。
grep -iE "^[[:digit:]]\.Dani\s{0,}C[h]*ris" input.txt | xargs echo "output:"
または、agep
私のUbuntuシステムには存在しないため、インストールされたコマンドを使用します。
agrep -1 '[0-9]\.Dani#Chris' input.txt | xargs echo "output:"
結果:
output: 3.Dani Cris Philos Physical
情報:
[[:digit:]]\.
、:入力ファイルから[0-9]\.
いくつかの選択3.
Dani\s{0,}
,Dani#Chris
: 名前の後にスペースがあってもtex Daniを取得します。C[h]*ris
: キャプチャCris
またはChris
| xargs echo "Output:"
: xargs をクリックし、Output:
結果の前にテキストを追加します。
答え2
sed、awk、grepでもこれを行うことができます。
方法1 sedの使用
sed -n '/Dani/p’ example.txt | sed -n '/Dani/p’
方法2 awkの使用
awk '$0 ~ "Dani" && $0 ~ "Cris" {print $0}’ example.txt
方法3 grepの使用
grep 'Dani' example.txt | grep ' Cris'
出力
3.Dani Cris Philos Physical