Regex 如何使用sed打印匹配图案
我想使用sed打印匹配图案,例如:Regex 如何使用sed打印匹配图案,regex,linux,bash,sed,awk,Regex,Linux,Bash,Sed,Awk,我想使用sed打印匹配图案,例如: 我想获得uuid,因此我可以使用它: blkid$1 | grep-o-E“[a-f0-9-]{8}([a-f0-9-]{4}){3}[a-f0-9-]{12}” 如何使用sed或awk执行此操作?您想要此操作吗 awk: sed: sed sed -n 's/pattern/&/p' file -n是告诉sed安静,&是匹配字符串,p是打印字符串 awk awk '/pattern/' file 在您的情况下,将模式更改为[a-f0-9-]{8}
我想获得uuid,因此我可以使用它:
blkid$1 | grep-o-E“[a-f0-9-]{8}([a-f0-9-]{4}){3}[a-f0-9-]{12}”
如何使用sed或awk执行此操作?您想要此操作吗 awk: sed:
sed
sed -n 's/pattern/&/p' file
-n
是告诉sed安静,&
是匹配字符串,p
是打印字符串
awk
awk '/pattern/' file
在您的情况下,将模式更改为[a-f0-9-]{8}([a-f0-9-]{4}{3}[a-f0-9-]{12}
,可能需要使用\
来转义[
Awk和sed解决方案:
$ blkid /dev/sda2 | sed -e 's/.*UUID="\([0-9A-F]*\).*/\1/'
16A42BA2A42B837B
$ blkid /dev/sda2 | awk '{split($2, tmp, "=") ; print tmp[2]}'
"16A42BA2A42B837B"
$ blkid /dev/sda2 | awk -F'UUID="|"' '{print $2}'
16A42BA2A42B837B
使用sed:
sed -n 's/.*\(Pattern\).*/\1/p'
测试
回显“开始 ”
Start
echo“Start ”| sed-n's/(Start)。/\1/p'
开始
在上有一个很好的sed
一行程序列表。它建议了两种模拟grep
的方法:
sed -n '/regexp/p' # method 1
sed '/regexp/!d' # method 2
/regexp/p
打印与/regexp/
匹配的行(需要使用-n
标志以防止sed
打印/重新打印每个处理的行。)
/regexp/!d
删除所有不匹配的行/regexp/
,因此只打印匹配的行。谢谢,这就是我想要的模式。正确的模式是:[a-f0-9-]{8}-([a-f0-9-]{4}-{3}[a-f0-9-]{12}sed-n'/pattern/p'
执行此任务-它执行“打印”而不是“替换为自我打印”
blkid | sed -nr 's/^.+UUID="(.*?)" .+$/\1/p'
sed -n 's/.*\(Pattern\).*/\1/p'
sed -n '/regexp/p' # method 1
sed '/regexp/!d' # method 2