有没有办法在使用bash的文件中找到像XXXX-XXXX-XXXX(其中X是数字和字母)的字符串?
例如:我在文本文件中有AAAAAAAA-AAA-AAA-XXXX-XXXX-XXXX此字符串,我想要仅提取XXXX-XXXX-XXXX(对于由X提出的组,正好有4个字母/数字)。
如果使用bash无法做到这一点,还有其他方法吗?
感谢。
答案 0 :(得分:2)
grep -Eo '\<[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{4}\>' file
-o
仅输出匹配的文字\<
和\>
来防止错误匹配,例如“12345-1234-12345”答案 1 :(得分:1)
试试这个:
grep -E '[0-9a-zA-Z]{4} - [0-9a-zA-Z]{4} - [0-9a-zA-Z]{4}' your.file
答案 2 :(得分:1)
[[ AAAAAAAA-AAA-AAA-XXXX-XXXX-XXXX =~ [0-9a-zA-Z]+-[0-9a-zA-Z]+$ ]] &&
echo ${BASH_REMATCH[0]}
答案 3 :(得分:0)
由于您希望找到并提取模式..您可以使用&#34; sed&#34;
假设你有字符串
%% $%## $ @#$ @ - &安培; ^% - &安培; ^&安培; -JHU7-iuhY-98Uy - *&安培; $# -
正如您所提到的,只有XXXX组由字母数字组成
命令行
echo '%%$%##$@#$@-&^%-*&*^&-JHU7-iuhY-98Uy-*&$#-(*&^'|sed 's/[^[:alnum:]-]//g'|sed 's/^-\{1,\}//g'|sed 's/-\{1,\}$//g'
输出
JHU7-iuhY-98Uy