linux - 使用 AWK 仅提取 Linux Kernel Versions 列
问题描述
从 Debian/Ubuntu grub 配置文件 /boot/grub/grub.cfg,我想只提取 Linux Kernel Version 列,使用 AWK。
我使用管道编写了一个非常长的命令。我们可以把它缩短吗?
我的命令:
# awk -F"--class" '/menuentry/ && /with Linux/ {print $1}' /boot/grub/grub.cfg | awk '{print i++ " : " $5,$6,$7,$8}' | sed -e "s/'/ /g"
0 : Linux 5.12.1
1 : Linux 5.12.1 (recovery mode)
2 : Linux 4.19.0-14-amd64
3 : Linux 4.19.0-14-amd64 (recovery mode)
上面的输出是我想要的输出,但我想知道命令是否可以更短以产生相同的输出?
解决方案
根据您显示的尝试,请您尝试以下操作。这没有经过测试,因为实际样品没有在帖子中给出。
awk -F"--class" '
/menuentry/ && /with Linux/{
gsub(/\047/,"",$1)
split($1,arr," ")
print i++" : "arr[5],arr[6],arr[7],arr[8]
}
' Input_file
说明:为上述添加详细说明。
awk -F"--class" ' ##Starting awk program from here, setting field separator as --class for all lines.
/menuentry/ && /with Linux/{ ##Searching menuentry AND with Linux keywords in line.
gsub(/\047/,"",$1) ##Globally substituting ' with NULL in 1st field.
split($1,arr," ") ##Splitting 1st field into array arr here.
print i++" : "arr[5],arr[6],arr[7],arr[8] ##Printing i value(increment with 1 here) then printing values of array 5th, 6th, 7th and 8th elements here.
}
' Input_file ##Mentioning Input_file name here.
推荐阅读
- javascript - ngu-carousel :: ExpressionChangedAfterItHasBeenCheckedError: 表达式在检查后已更改
- c# - NHAPI C# 3.5 解析 orm_001 2.3
- c# - 结构到类并返回隐式转换
- mysql - Nodejs上的MySql:使用池中的连接并运行查询不会释放连接
- java - 如何过滤列表视图?
- android - 创建具有透明背景的 Ionic 3 应用程序
- reactjs - React Loadable 在动态加载的组件中请求新的 css
- python - 将HTML表格的每一行读入python列表
- javascript - 如果字符串变量等于特殊字符“✔”的条件
- python - 根据特定键的值从python字典中提取键值对