我的输出如下所示:
我想从包含字符串“Fe\s2b”的行中选取最后一个元素。但问题是每次出现“H\s\s1\s\s\s\s\s\s4861.33A”都是一个网格点,理想情况下我应该在包含的行旁边有一个“Fe\s2b” “H\s\s1\s\s\s\s\s\s4861.33A”(它们是交替的,在这种情况下,我可以简单地 awk 每个偶数行的最后一个元素)。
由于情况并非如此,我希望记录在下一行中为每个“H\s\s1\s\s\s\s\s\”搜索字符串“Fe\s2b”的所有情况s4861.33A”的发生。像这样的东西(我知道这不起作用):
awk '{print NR, $0}' testing.txt | grep "H\s\s1\s\s\s\s\s\s4861.33A" testing.txt | awk '{
if ($1 == H && $(NF + 1)== H)
print "-99";
else
grep "Fe\s2b" testing.txt | awk "{print $NF}" testing.txt && <increment line=line+2>}' testing.txt
在这里,我试图获取每行的第一个元素并与下一行的第一个元素进行比较,如果它们匹配,则我分配一个值“-99”;否则我 awk 下一行的最后一个元素(即对应于 'Fe\s2b' 的值)并跳转到 n+2 行。
答案1
我找到了一种在 python 中执行此操作的方法:
data = open('testing.txt','r+')
for line in data:
if line[0] == 'H':
print(-99)
else:
if line[-8]==" ":
print(line[-7:-1])
else:
print(line[-8:-1])
try:
data.__next__()
except StopIteration:
break