awk:根据选定列中的值筛选日志文件

awk:根据选定列中的值筛选日志文件,awk,sed,Awk,Sed,使用这种以多列格式排列的输入数据: #dlgfn #in cluster #LE #rmsd #ats #tors #h_ats #lig_eff /Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1, -2.3600, 238.8992, 80, 29, 2, -0.0303 /Users/gleb/Desktop/s

使用这种以多列格式排列的输入数据:

#dlgfn #in cluster #LE #rmsd #ats #tors #h_ats #lig_eff 
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1, -2.3600, 238.8992,  80, 29, 2, -0.0303
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_08_lig_cne_177,1, -2.0900, 238.8239,  80, 29, 2, -0.0268
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_08_lig_cne_177,1, -1.9600, 239.3082,  80, 29, 2, -0.0251
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1, -1.9300, 238.6729,  80, 29, 2, -0.0247
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,2, -1.5500, 239.4734,  80, 29, 2, -0.0199
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1, -1.0900, 240.2418,  80, 29, 2, -0.0140
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_08_lig_cne_177,1, -0.7700, 212.9619,  80, 29, 2, -0.0099
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_09_lig_cne_177,3, -0.7200, 218.4045,  80, 29, 2, -0.0092
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_09_lig_cne_177,2, -0.6800, 201.6466,  80, 29, 2, -0.0087
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_10_lig_cne_177,2, -0.6300, 240.4892,  80, 29, 2, -0.0081
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_10_lig_cne_177,1, -0.5400, 240.1765,  80, 29, 2, -0.0069
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_09_lig_cne_177,1, -0.5000, 215.6699,  80, 29, 2, -0.0064
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_07_lig_cne_177,1, -0.3800, 199.5818,  80, 29, 2, -0.0049
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_10_lig_cne_177,2, -0.3400, 240.5046,  80, 29, 2, -0.0044
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_09_lig_cne_177,1, -0.3300, 218.2226,  80, 29, 2, -0.0042
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1, -0.2700, 231.5438,  80, 29, 2, -0.0035
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_05_lig_cne_177,1, -0.0600, 200.8627,  80, 29, 2, -0.0008
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_04_lig_cne_177,2, -0.0300, 220.3135,  80, 29, 2, -0.0004
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_09_lig_cne_177,1, -0.0000, 221.4531,  80, 29, 2, -0.0000
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_08_lig_cne_177,1,  0.0300, 231.2099,  80, 29, 2,  0.0004
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1,  0.0400, 240.5225,  80, 29, 2,  0.0005
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1,  0.0500, 232.5498,  80, 29, 2,  0.0006
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_12_lig_cne_177,1,  0.0600, 229.8094,  80, 29, 2,  0.0008
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_11_lig_cne_177,2,  0.2300, 218.2757,  80, 29, 2,  0.0029
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_09_lig_cne_177,3,  0.2700, 220.3585,  80, 29, 2,  0.0035
/Users/gleb/Desktop/scripts/analys_clusters/sub_folders_to_analyse/7000_cne_lig177.AllBoxes/7000_09_lig_cne_177,1,  0.3700, 219.5366,  80, 29, 2,  0.0047
我使用以下AWK表达式扫描日志和打印行号+第二、第三和第五列,同时跳过第一行(标题):

获得这种产出:

ID, POP, dG, LIG
1, 1, -2.3600,  80
2, 1, -2.0900,  80
3, 1, -1.9600,  80
4, 1, -1.9300,  80
5, 2, -1.5500,  80
6, 1, -1.0900,  80
7, 1, -0.7700,  80
8, 3, -0.7200,  80
9, 2, -0.6800,  80
10, 2, -0.6300,  80
11, 1, -0.5400,  80
12, 1, -0.5000,  80
13, 1, -0.3800,  80
14, 2, -0.3400,  80
15, 1, -0.3300,  80
16, 1, -0.2700,  80
17, 1, -0.0600,  80
18, 2, -0.0300,  80
19, 1, -0.0000,  80
20, 1,  0.0300,  80
21, 1,  0.0400,  80
22, 1,  0.0500,  80
23, 1,  0.0600,  80
如何修改此gawk表达式以将筛选器设置为第三列skeeping初始日志中包含正值的所有行?值得注意的是,因为LINNE已经基于第3列中的值进行了排列,所以基本上每次我都需要在最后N行中进行排序(第三列中为正值)。或者,我可以使用一些sed表达式(带-I)来编辑现有文件,删除那些行吗?

我如何修改此gawk表达式以将筛选器设置为第三列,从包含正值的初始日志中删除所有行

您可以将
&&
用于和
|
用于或处于
awk
状态,请尝试以下操作:

(NR>1 && $3<0.0){ print ++lineNumber, $2, $3, $5 }
(NR>1&&$3如何修改此gawk表达式以将筛选器设置为第三列skeeping初始日志中包含正值的所有行

您可以将
&&
用于和
|
用于或处于
awk
状态,请尝试以下操作:

(NR>1 && $3<0.0){ print ++lineNumber, $2, $3, $5 }

(NR>1&&3美元能否请您尝试以下内容,仅基于您展示的样本,使用GNU
awk
编写和测试

awk -F',[[:space:]]*' -v OFS=", " '
FNR==1{
  print "ID, POP, dG, LIG"
  next
}
$3<0{
  print ++line,2,$3,$5
}
$3>=0{ exit }'  Input_file

请您仅根据所展示的样本,使用GNU
awk
编写并测试以下内容,好吗

awk -F',[[:space:]]*' -v OFS=", " '
FNR==1{
  print "ID, POP, dG, LIG"
  next
}
$3<0{
  print ++line,2,$3,$5
}
$3>=0{ exit }'  Input_file


gawk:ligne de commande:1:(NR>1&&3>=0.0){print++行号,$2,$3,$7}gawk:ligne de command:1:^语法error@HotJAMS您键入了&3而不是$3…请仔细检查您的代码我在我的答案中输入了错误,我编辑过,请立即尝试。无论如何,不会打印正值。此外,这不会打印正确的行号,因为您没有增加行号如果不打印,则编号…@DaemonPainter HotJAMS声明要跳过的行始终是最后一行Gawk:ligne de commande:1:(NR>1&&3>=0.0){print++lineNumber,$2,$3,$7}gawk:ligne de command:1:^语法error@HotJAMS您键入了&3而不是$3…请仔细检查您的代码我在我的答案中输入了错误,我编辑过,请立即尝试。无论如何,不会打印正值。此外,这不会打印正确的行号,因为您没有增加行号如果您没有打印,则编号…@DaemonPainter HotJAMS指出,要跳过的行始终是最后一行。它与我的GAWK版本完全相同,因此打印所有行,而我需要删除第三列(dG)中包含正值的所有行@HotJAMS,当然可以,现在就编辑解决方案,请您现在检查一下,让我知道这是否有帮助,谢谢。是的,现在可以了,非常感谢!一个问题,GAWK和AWK的区别是什么?:-)这将不会打印正确的行号,因为如果不打印,则不会更新行号…嘿,是的,我确认在我的输入数据中,行已经根据第三列进行了排序,因此在0之后不再有负值。我想要的是只删除N个最后的行号(始终具有正值)它与我的GAWK版本完全相同,所以打印所有行,而我需要在第三列(dG)中删除所有包含正值的行@HotJAMS,当然是现在编辑的解决方案,请您现在检查一下,让我知道这是否有帮助,谢谢。是的,它现在工作了,非常感谢!一个问题,GAWK和AWK之间的区别是什么?:-)这不会打印正确的行号,因为如果不打印,您不会更新行号…嘿,是,我确认输入数据中的行已根据第三列进行排序,因此0之后不再有负值。我想要的是只删除N个最后的LINNE(总是具有正值)
ID, POP, dG, LIG
1, 2, -2.3600, 80
2, 2, -2.0900, 80
3, 2, -1.9600, 80
4, 2, -1.9300, 80
5, 2, -1.5500, 80