gpt4 book ai didi

python - 从非列文件中提取数据(在 awk 中)

转载 作者:行者123 更新时间:2023-12-01 05:27:01 25 4
gpt4 key购买 nike

我正在尝试从非列文件中提取一些特定值。文件的格式为

 16O     ADOPTED LEVELS, GAMMAS        1993TI07                  93NP     199902
16O L 0.0 0+ STABLE
16O 2 L ISPIN=0
16O 3 L XREF=ABCDEFHIJKLMNOPQ
16O L 6049.4 10 0+ 67 PS 5
16O 2 L ISPIN=0
16O 3 L XREF=ABCEFIJKMP
16O G 6048.2 10 [E0] 100
16O L 6129.89 4 3- 18.4 PS 5
16O 2 L ISPIN=0$ MOMM1=+1.668 12 (1989RA17)
16O 3 L XREF=ABCEFHIJKLNOPQ
16O G 6128.63 4 100 [E3]
16O 2 G BE3W=13.5 7

我对序列 16O​​ L 之后的值感兴趣。例如 0.0、6049.4、6129.89 等。一般来说,我想从这些文件中提取的值位于序列 (Number)(Element)(spaces)L(space).

棘手的是,如果 (Element) 由一个字母组成,则有 3 个空格。如果 (Element) 由两个字母组成,则有 2 个空格。示例文件是

 10BE    ADOPTED LEVELS, GAMMAS        2004TI06                  04NP     200705
10BE L 0.0 0+ 1.51E+6 Y 4
10BE2 L ISPIN=1 $ %B-=100
10BE3 L XREF=ABDEFIJKLMNOPQSTUVWXYZabceghij
10BE cL T from weighted average of T{-1/2}=1.51 Ma 6 (Hofmann et al.,
10BE2cL Nucl. Instrum. Meth. Phys. Res. |b 24-25 (1987) 276),
10BE3cL T{-1/2}=1.53 Ma 5% (1993Mi26), and T{-1/2}=1.48 Ma 5% (1993Mi26).
10BE L 3368.03 3 2+ 125 FS 12
10BE2 L ISPIN=1 $ %IT=100
10BE3 L XREF=ABCDEFIJKLMNOPQRSTUVWXYZabceghij
10BE cL B(E2)=52 e{+2} fm{+4} 6 (1987Ra01).
10BE cL E from {+9}Be(n,|g) (1983Ke11). Other value: 3368.34 keV {I43}
10BE2cL (1999Bu26).
10BE2 L WIDTHG=3.66E-3 EV 35
10BE G 3367.415 30 100 E2
10BE2 G WIDTHG=3.66E-3 EV 35$BE2W=8.00 76
10BE L 5958.39 5 2+ 55 FS LT
10BE2 L ISPIN=1 $ %IT=100
10BE3 L XREF=DFJKLMPRTUWYbeghi
10BE cL E from {+9}Be(n,|g) (1983Ke11). Other value: 5958.3 keV {I3}
10BE2cL (1969Al17).
10BE G 2589.999 60 90 GTM1
10BE G 5955.9 5 10 LTE2
10BE L 13.05E3 10 290 KEV 130 A
10BE2 L %A GT 0
10BE3 L XREF=E
10BE cL E |G: from {+7}Li({+7}Li,|a+{+6}He) (2001Cu06).

有没有办法使用awk获取这些值?是否有其他语言适合此类工作?

我用过

awk '/   L/ { print $3 } ' file

对于第一个文件类型(即 {3spaces}L)并且它有效。我用过

awk '/  L/ { print $3 } ' file

对于第二个文件类型(即{2spaces}L),它给出了奇怪的结果(即它在序列(两个空格)G之后打印值,我不明白为什么。唯一的方法是工作就是使用

awk '/  L / { print $3 } ' file

(即 L 后多一个空格)。为什么第二种文件类型会发生这种情况?有没有办法对两种文件类型使用一个代码?

最佳答案

您是否正在寻找“160 L”行中存在的值如果是这样的话,这应该可以完成工作

awk '/16O   L/ { print $3 } ' filename

关于python - 从非列文件中提取数据(在 awk 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21136229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com