这里得到了列的列表,如下:
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