次のリストから、名前が で始まりで終わるawk
すべての学生の一意のロール番号と名前を一覧表示するコマンド ( を使用するのが望ましい) が必要です。A
k
001 Abhishek Physics 90
002 Rohan Maths 100
003 simashree Chemistry 89
002 Rohan Language 80
005 Vamsi Computers 99
001 Abhishek Maths 95
006 Surjya Computers 93
答え1
を使用した解決策を具体的に尋ねたのでawk
、ロール番号と名前が最初のフィールドと2番目のフィールドであると仮定すると、次のように使用できます。
awk '$2 ~ /^A[[:alpha:]]*k$/ {print $1,$2}' yourfile
一意のレコードが必要な場合は、結果をコマンドにパイプするのが最も簡単な方法ですsort -u
。
awk '$2 ~ /^[[:alpha:]]*k$/ {print $1,$2}' yourfile | sort -u
より正確な表現としては単語アンカーの代わりにラインアンカー正規表現内の^、$、すなわち
awk '$2 ~ /\<[[:alpha:]]*k\>/ {print $1,$2}' ...
このコンテキストでは両方とも機能するようです (おそらくフィールドがすでに空白で区切られているため)。
答え2
というファイルにこれらのレコードがあると仮定するとdata_file.txt
、次を使用できます。
grep "A[a-z]*k" data_file.txt
最初の列の数字を削除する場合は、次のようにします。
grep "A[a-z]*k" test | cut -d" " -f 2-
最後の列の数字を削除する場合は、次のようにします。
grep "A[a-z]*k" test | cut -d" " -f -3