使用 sed 捕获第一个大写字母的单词
Using sed to capture the first word with capital letters
我有兴趣检索句子中以 5 个大写字母开头的第一个单词。比如一个句子是SOLAR eclipse
,我需要SOLAR
。如果句子是 SOLA eclipse
或 solar ECLIPSE
或 40 thieves
,则什么都没有。
printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | sed 's/\(^[A-Z]\{5\}\).*//'
SOLAR
SOLA eclipse
solar ECLIPSE
40 thieves
正如我们所见,提取仅适用于第一句话。我原以为第二个、第三个和第四个会 return 空字符串,但 return 是整个字符串。
使用 grep
$printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | grep -oE '^[A-Z]{5}'
SOLAR
$
有了awk
你也可以尝试关注一下吗
printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" |
awk 'match([=10=],/^[A-Z]{5}/){print substr([=10=],RSTART,RLENGTH)}'
我有兴趣检索句子中以 5 个大写字母开头的第一个单词。比如一个句子是SOLAR eclipse
,我需要SOLAR
。如果句子是 SOLA eclipse
或 solar ECLIPSE
或 40 thieves
,则什么都没有。
printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | sed 's/\(^[A-Z]\{5\}\).*//'
SOLAR
SOLA eclipse
solar ECLIPSE
40 thieves
正如我们所见,提取仅适用于第一句话。我原以为第二个、第三个和第四个会 return 空字符串,但 return 是整个字符串。
使用 grep
$printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | grep -oE '^[A-Z]{5}'
SOLAR
$
有了awk
你也可以尝试关注一下吗
printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" |
awk 'match([=10=],/^[A-Z]{5}/){print substr([=10=],RSTART,RLENGTH)}'