特定の文字で始まり、終わる文字列を含むレコードを検索します。

特定の文字で始まり、終わる文字列を含むレコードを検索します。

次のリストから、名前が で始まりで終わるawkすべての学生の一意のロール番号と名前を一覧表示するコマンド ( を使用するのが望ましい) が必要です。Ak

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

関連情報