程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 AWK 仅提取 Linux Kernel Versions 列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 AWK 仅提取 Linux Kernel Versions 列?

开发过程中遇到使用 AWK 仅提取 Linux Kernel Versions 列的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 AWK 仅提取 Linux Kernel Versions 列的解决方法建议,希望对你解决使用 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," ")            ##SplitTing 1st field into array arr here.
  print i++" : "arr[5],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.

大佬总结

以上是大佬教程为你收集整理的使用 AWK 仅提取 Linux Kernel Versions 列全部内容,希望文章能够帮你解决使用 AWK 仅提取 Linux Kernel Versions 列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。