Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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
Linux 使用awk命令获取模式下的信息_Linux_Shell_Awk - Fatal编程技术网

Linux 使用awk命令获取模式下的信息

Linux 使用awk命令获取模式下的信息,linux,shell,awk,Linux,Shell,Awk,我有一个包含大量信息的文件,我想从这里提取一些数据。我只会在这里发布有趣的部分。我想提取IQ和JQ值以及上面两行的J_ij[meV]值。我读了这个问题,其中一个模式用于提取下面的信息,我想做一些类似的事情。我最初的想法是: awk '/IQ =/ { print $6,$12 } /IQ =/ {for(i=2; i<=2; i++){ getline; print $11 }}' input.text > output.txt 我的预期产出是: IQ JQ J_ij [meV]

我有一个包含大量信息的文件,我想从这里提取一些数据。我只会在这里发布有趣的部分。我想提取IQ和JQ值以及上面两行的J_ij[meV]值。我读了这个问题,其中一个模式用于提取下面的信息,我想做一些类似的事情。我最初的想法是:

awk '/IQ =/ { print $6,$12 }  /IQ =/ {for(i=2; i<=2; i++){ getline; print $11 }}' input.text > output.txt
我的预期产出是:

IQ JQ J_ij [meV]
1 1 0.000000000
1 6 1.846194885
1 8 0.240501782

它来自粗体字(****),第一行只是指示性的。

请尝试下面的内容。用示例编写和测试

awk '
BEGIN{
  print "IQ JQ J_ij [meV]"
}
FNR>1 && /IQ =/{
  value=$6 OFS $12
  found=1
  next
}
found && NF && !/ ->Q/{
  if(value){
     print value OFS $NF
  }
  value=found=""
}'  Input_file
输出如下

IQ JQ J_ij [meV]
1 1 0.000000000
1 6 1.846194885
1 8 0.240501782

欢迎使用SO,特别感谢您在问题中添加您尝试的代码。您的输入示例不清楚,因此请将其包装在代码标记中,也请在有问题的代码标记中提及预期的输出,然后让我们知道。我在“&&&”上有一个语法错误,我不知道如何修复它-我不知道&应该是什么意思,但看起来您只是想删除&。或者你可以用
@KamilCuk替换整个
}&&/IQ=/{
,@KamilCuk它解决了我一半的问题,现在我需要从标记下面的两行中提取信息(循环似乎不起作用)好吧,看看
i=2;我只想从这些行中提取,我不知道如何@KamilCuk做到。我想从标签下面的第二行提取。我重新编辑了我的问题。
IQ JQ J_ij [meV]
1 1 0.000000000
1 6 1.846194885
1 8 0.240501782