Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用sed打印匹配图案_Regex_Linux_Bash_Sed_Awk - Fatal编程技术网

Regex 如何使用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}

我想使用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}([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