후속 행 간의 요소별 비교, 각 빈 출력에 값 할당

후속 행 간의 요소별 비교, 각 빈 출력에 값 할당

내 출력은 다음과 같습니다

ASCII 파일

"Fe\s2b" 문자열이 포함된 행에서 마지막 요소를 선택하고 싶습니다. 하지만 문제는 "H\s\s1\s\s\s\s\s\s4861.33A"가 나타날 때마다 그리드 포인트이고 이상적으로는 포함하는 선 옆에 "Fe\s2b"가 있어야 한다는 것입니다. H\s\s1\s\s\s\s\s\s4861.33A"(대체이므로 각 짝수 행의 마지막 요소를 간단히 호출할 수 있습니다).

그렇지 않기 때문에 각 "H\s\s1\s\s\s\s\s\s4861.33A"에 대해 다음 줄에서 "Fe\s2b" 문자열을 검색하는 모든 항목을 기록하고 싶습니다. . 다음과 같은 것입니다(이것이 작동하지 않는다는 것을 알고 있습니다).

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" 값을 할당합니다. 그렇지 않으면 다음 행의 마지막 요소를 호출합니다(즉, 해당). 'Fe\s2b' 값)으로 이동하고 n+2 라인으로 점프합니다.

답변1

파이썬에서 이 작업을 수행하는 방법을 찾았습니다.

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

관련 정보