다음 목록에서 이름이 시작 하고 끝나는 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
롤 번호와 이름이 첫 번째와 두 번째 필드라고 가정하면 다음을 사용할 수 있습니다.
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