2015-01-09 2 views
1

이 아니 변화에 $ 0 힘 재건을하지 왜 이것이 내가 생각 해낸 그 대답에 이어AWK - 출력 기록

Multiline edit in awk

여기에 처리 문제 및 데이터에 대한 후속이다 다음의 해결책

BEGIN {RS="\n-+\n"; FS="\n";OFS="\t"} 
    NF > 1 {sub(/^MV: /,""); print} 

그러나 이것은 지정된 OFS가 적용되지 않았기 때문에 작동하지 않았습니다. 물론 하위의 기본 동작은 $ 0을 변경하는 것으로 기록 재구성을 트리거하지 않습니다 (또는 새 OFS를 실행하는 데 필요한 것이 무엇이든).

내가 묻는처럼 하위 명령

BEGIN {RS="\n-+\n"; FS="\n";OFS="\t"} 
    NF > 1 {sub(/^MV: /,"",$1); print} 

답변

1

에서 $ 1을 (를) 지정을 변경하는 경우 그것은 "왜 안 지수 ($ 0.3)이 $ 0 문자열은 문자 3에서 시작 반환하지?"작동합니까 . 대답은 간단합니다. 언어가 정의 된 방식이 아니기 때문입니다.

필드 (예 : $ 1)에 할당하면 FS를 OFS로 대체하는 레코드가 재구성됩니다.

$ 0에 할당하면 FS를 사용하여 필드를 레코드로 다시 분할합니다.

그게 전부입니다.