여기서는 다음과 같은 열 목록을 얻습니다.
59 LOUIS 1202 +1
60 FREDDIE 1201 +4
61 FINLAY 1200 -2
62 LEON 1137 +12
63 HARLEY 1132 +6
64 DAVID 1127 -1
65 MOHAMMAD1100 +6
66 REECE 1095 -1
67 KIAN 1090 0
68 KAI 1056 -6
69 KYLE 1030 -18
70 BRANDON 1011 -4
71 HAYDEN 1006 +5
72 ZACHARY 995 +10
73 KIERAN 973 -12
73 LUCA 973 -1
75 ASHTON 954 +4
76 BAILEY 939 -6
77 JAKE 913 +10
78 GABRIEL 910 +14
79 SAM 900 -2
80 EVAN 890 0
81 BRADLEY 847 -13
다음과 같이 문자 "L"이 있는 행만 추출하려면 어떻게 해야 합니까?
73 LUCA 973 -1
답변1
awk '$2 ~ /^L/' file
정규식을 사용하여 두 번째 필드를 테스트 awk
하고 일치하는 줄을 인쇄하도록 지시합니다.$2
~
^L
정규식은 ( $2
) 형식의 두 번째 필드와 일치합니다.^
L
답변2
@bu5hman의 답변에 따르면 awk를 사용하면 문자를 인수로 쉽게 전달할 수 있습니다.
awk -v letter="L" 'substr($2, 1, 1) == letter' file
# or with a constructed regex
awk -v letter="L" '$2 ~ "^" letter' file
답변3
이것은 중복된 것처럼 보이지만 어쨌든 이해한다면 다음과 같이 할 수 있습니다.
먼저 목록을 일부 nameslist.txt
파일에 저장한 후 다음을 수행합니다.
sed -rn '/^[^\s]+\s+[F]/p' list.txt > result.txt
, result.txt
파일에 다음 출력이 반환되어야 합니다.
60 FREDDIE 1201 +4 61 FINLAY 1200 -2
답변4
또 다른 grep 예:
grep -E "[0-9]+ +L" file
+는 하나 이상의 이전 문자와 일치하므로 이 경우에는 최소한 하나의 숫자와 최소한 하나의 공백, 그 뒤에 대문자 L이 따라옵니다.
-E에서는 +를 리터럴 "+"가 아닌 특수 문자로 해석해야 합니다.
산출:
59 LOUIS 1202 +1
62 LEON 1137 +12
73 LUCA 973 -1