Bash脚本打印每行中的不同字段
我的意见如下:- 测试=变量 测试ID=2122 1你好,直到你活跃 2此代码用于功能3 我需要如下输出:- 变数 2122Bash脚本打印每行中的不同字段,bash,shell,awk,sed,Bash,Shell,Awk,Sed,我的意见如下:- 测试=变量 测试ID=2122 1你好,直到你活跃 2此代码用于功能3 我需要如下输出:- 变数 2122 直到如果目标是打印等号后面的内容: $ awk -F= '$2 {print $2}' file variable 2122 -F=告诉awk使用=作为字段分隔符。因此,在一行中第一个=之前出现的是第一个字段$1 $2{print$2告诉awk如果第二个字段不是空的,则打印第二个字段 awk '/=/ {gsub(/^.*=/,""); print; next} !/=
直到如果目标是打印等号后面的内容:
$ awk -F= '$2 {print $2}' file
variable
2122
-F=
告诉awk使用=
作为字段分隔符。因此,在一行中第一个=
之前出现的是第一个字段$1
$2{print$2
告诉awk如果第二个字段不是空的,则打印第二个字段
awk '/=/ {gsub(/^.*=/,""); print; next} !/=/ {print $3}' file
variable
2122
till
code
解释:
awk '
/=/ { # if equals sign in the record
gsub(/^.*=/,"") # remove everything from the beginning to the =
print # print it
next}
{print $3} # print the third field
' file
根据@karakfa和@John1024的建议编辑。这是一个谜题吗?至少“尝试”解释一下。嗨,约翰,谢谢……但我想在这里打印下一行字段号2(直到)和下一行(代码)还有。till和code对我来说似乎是第三个字段。嗨,James,@Pseudo name=hdiskpower8逻辑设备ID=2122 1 fscsi2 hdisk37 FA 10eB active alive 0 0 fscsi0 hdisk13 FA 7eB active alive 0 0上面是我试图运行您的co时想要使用awk打印的输入数据mmand pattern it show error(awk:fatal:1无效,因为gsub的参数数量)
$0~
意味着您可以删除它们并替换为/=/
和!/=/
+1。由于使用了下一个语句,第二个测试似乎没有必要。更简单的形式可能是:`awk'/=/=/{gsub(/^.*/,“”);print;next}{print$3}'文件`。