使用sed捕获大写字母的第一个单词

问题描述 投票:1回答:2

如果第一个单词以5个大写字母开头,我有兴趣检索该单词。例如,如果一个句子是SOLAR eclipse,则需要SOLAR。如果句子是SOLA eclipsesolar ECLIPSE40 thieves,则无。

printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | sed 's/\(^[A-Z]\{5\}\).*/\1/'
SOLAR
SOLA eclipse
solar ECLIPSE
40 thieves

如我们所见,提取仅适用于第一句话。我曾期望它会为第二,第三和第四位返回空字符串,但是它将返回整个字符串。

unix sed extraction
2个回答
2
投票

使用grep

$printf  "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | grep -oE  '^[A-Z]{5}'
SOLAR
$

0
投票

[使用awk,您也可以尝试下面的方法。

printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | awk 'match($0,/^[A-Z]{5}/){print substr($0,RSTART,RLENGTH)}'
© www.soinside.com 2019 - 2024. All rights reserved.