如何从cut处理后的字符串中提取出‘kernel’关键词?
提取带/不带单引号字符串中的
kernel单词方案 针对你遇到的场景——不管字符串是否以单引号开头,要从'kernel-rt|kernel-alt|/kernel-'这类内容里提取出kernel,我整理了几个简单实用的命令行方案,直接就能用:
方案1:用grep快速提取(最简洁)
grep的-o选项可以只输出匹配到的内容,不管原字符串有没有单引号,它都会精准定位到kernel:
# 针对你已经用cut得到的结果,直接管道衔接 cut -d' ' -f 1 string.txt | grep -o "kernel"
如果原字符串里有多个kernel,这个命令会每行输出一个;要是只需要唯一值,再加个uniq就行:
cut -d' ' -f 1 string.txt | grep -o "kernel" | uniq
方案2:用sed处理单引号+匹配提取
先把字符串里的单引号去掉,再通过正则匹配提取kernel:
cut -d' ' -f 1 string.txt | sed -e "s/'//g" -e 's/.*\(kernel\).*/\1/'
这里sed -e "s/'//g"负责删除所有单引号,后面的正则则会提取出字符串中的kernel(如果有多个,只会保留最后一个,要是想保留所有可以结合grep的思路)。
方案3:用awk拆分字段查找
先剥离单引号,再用分隔符(-、|、/)拆分字段,找到目标单词:
cut -d' ' -f 1 string.txt | awk -F"'" '{print $2}' | awk -F'[-|/]' '{for(i=1;i<=NF;i++) if($i=="kernel") print $i}'
这个方案更灵活,要是以后需要提取其他类似结构的单词,调整分隔符和判断条件就行。
所有方案都兼容带单引号和不带单引号的字符串输入,比如直接输入kernel-rt|kernel-alt|/kernel-,命令也能正常提取出kernel哦。
内容的提问来源于stack exchange,提问作者user607694
相关产品推荐
相关产品推荐

