Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本打印每行中的不同字段_Bash_Shell_Awk_Sed - Fatal编程技术网

Bash脚本打印每行中的不同字段

Bash脚本打印每行中的不同字段,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} !/=

我的意见如下:-

测试=变量

测试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} !/=/ {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}'文件`。