Awk 如何从可能/可能不以单引号开头的字符串中提取单词
示例字符串:Awk 如何从可能/可能不以单引号开头的字符串中提取单词,awk,sed,grep,Awk,Sed,Grep,示例字符串: 'kernel-rt|kernel-alt|/kernel-' 'headers|xen|firmware|tools|python|utils' cut-d'-f1 string.txt给了我 'kernel-rt|kernel-alt|/kernel-' 但我们如何进一步从中获得“内核” $ cat file 'kernel-rt|kernel-alt|/kernel-' 'headers|xen|firmware|tools|python|utils' $ $ awk '
'kernel-rt|kernel-alt|/kernel-' 'headers|xen|firmware|tools|python|utils'
cut-d'-f1 string.txt
给了我
'kernel-rt|kernel-alt|/kernel-'
但我们如何进一步从中获得“内核”
$ cat file
'kernel-rt|kernel-alt|/kernel-' 'headers|xen|firmware|tools|python|utils'
$
$ awk '{print $1}' file
'kernel-rt|kernel-alt|/kernel-'
$
$ awk '{gsub(/\047/,"",$1); print $1}' file
kernel-rt|kernel-alt|/kernel-
$
$ awk '{gsub(/\047/,""); split($1,f,/[|]/); print f[1]}' file
kernel-rt
只是为了让你觉得
$ awk '{gsub(/\047|\.*/,"")}1' file
kernel-rt
只是为了让你觉得
$ awk '{gsub(/\047|\.*/,"")}1' file
kernel-rt
假设您只需要第三个内核(粗体),而不需要其他内核 'kernel rt | kernel alt |/kernel-'headers | xen | firmware | tools | python | utils' 下面是如何使用单个命令
awk
(标准Linuxgawk
)提取它的
解释
-F“|”
指定字段分隔符为|
,这样只需要第三个字段
拆分($3,a,“-”)
按-
拆分第三个字段,左部分分配给a[1]
match(a[1],“[:alnum:][]+”,b)
froma[1]
将字母数字字符串的序列提取到b[0]
打印b[0]
输出匹配的字符串
如果要从第2个或第1个字段提取
内核
。将$3
更改为$2
或$1假设您只需要第三个内核(粗体),而不需要其他内核
'kernel rt | kernel alt |/kernel-'headers | xen | firmware | tools | python | utils'
下面是如何使用单个命令awk
(标准Linuxgawk
)提取它的
解释
-F“|”
指定字段分隔符为|
,这样只需要第三个字段
拆分($3,a,“-”)
按-
拆分第三个字段,左部分分配给a[1]
match(a[1],“[:alnum:][]+”,b)
froma[1]
将字母数字字符串的序列提取到b[0]
打印b[0]
输出匹配的字符串
如果要从第2个或第1个字段提取内核
。将$3
更改为$2
或$1
不清楚,请务必在您的帖子中说明获取字符串的条件,然后使用GNU grep告知我们:|grep-Po kernel
;-)当前输出中有三个kernel
s:您希望得到哪一个?如果第一个不清楚,请尝试grep-oP“^”?\K[^\s-]+“file
/grep-oP“^”?\K[^\s-]+”在文章中提及获取字符串的条件,然后使用GNU grep告诉我们:| grep-Po kernel
;-)当前输出中有三个kernel
s:您希望得到哪一个?如果是第一个,请尝试grep-oP“^”?\K[^\s-]+“文件
/grep-oP“^”?\K[^\s-]+”