有没有什么方法可以在使用bash的文件中查找字符串如XXXX-XXXX-XXXX(其中X是数字和字母)?在使用bash的文件中查找字符串XXXX - XXXX - XXXX
例如:我有一个文本文件中的AAAAAAAA-AAA-AAA-XXXX-XXXX-XXXX这个字符串,我只想提取XXXX-XXXX-XXXX(正好有4个字母/ 。
如果不能使用bash来做到这一点,有没有其他方式来做到这一点?
谢谢。
有没有什么方法可以在使用bash的文件中查找字符串如XXXX-XXXX-XXXX(其中X是数字和字母)?在使用bash的文件中查找字符串XXXX - XXXX - XXXX
例如:我有一个文本文件中的AAAAAAAA-AAA-AAA-XXXX-XXXX-XXXX这个字符串,我只想提取XXXX-XXXX-XXXX(正好有4个字母/ 。
如果不能使用bash来做到这一点,有没有其他方式来做到这一点?
谢谢。
grep -Eo '\<[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{4}\>' file
-o
仅输出匹配的文本\<
和\>
防止错误匹配,如“12345-1234-12345 “Thx ...它工作正常! – NxA 2014-12-06 00:15:16
试试这个:
grep -E '[0-9a-zA-Z]{4} - [0-9a-zA-Z]{4} - [0-9a-zA-Z]{4}' your.file
我解释得更好。案件是非常特殊的,因为我有字符串是在这种形式AAAAAAAA-AAA-AAA-XXXX-XXXX-XXXX,我想提取只有XXXX-XXXX-XXXX(有正确的4个字母/数字组由Xs代替X之前的组是随机的,没有指定的长度)。 无论如何感谢您的时间 – NxA 2014-12-05 23:05:38
[[ AAAAAAAA-AAA-AAA-XXXX-XXXX-XXXX =~ [0-9a-zA-Z]+-[0-9a-zA-Z]+$ ]] &&
echo ${BASH_REMATCH[0]}
既然你想找到和提取的pattern..you可以用 “sed的”
让说你有串
%% $%$ ## @#$ @ - & ^% - &^& -JHU7-iuhY-98Uy- * & $# -
至于你提到XXXXs只有组由字母数字位数
命令行
echo '%%$%##[email protected]#[email protected]&^%-*&*^&-JHU7-iuhY-98Uy-*&$#-(*&^'|sed 's/[^[:alnum:]-]//g'|sed 's/^-\{1,\}//g'|sed 's/-\{1,\}$//g'
输出
JHU7-iuhY-98Uy
你真的要围绕每个'-'字符的空间?你知道'grep',它是为了匹配模式而设计的。你可以将你的字符串回显为'grep',或者如果你有一个文件,你可以'grep'xxx ....'file'并且得到与该模式匹配的行。这里有1000多个有关grep的问题。祝你好运。 – shellter 2014-12-05 22:52:17