줄 시작 부분의 "-from"을 "this"로 바꿉니다.

줄 시작 부분의 "-from"을 "this"로 바꿉니다.

줄 시작 부분의 "-from"을 "this"로 바꾸고 싶습니다. 줄 끝에 "R"이 있고 그 위 줄 끝에 "D"가 있는 경우 이런 일이 발생합니다.

예를 들어 아래 표시된 블록은 다음과 같습니다.

-from XXXXXXXXXXXXXXXXX/D   
-from XXXXXXXXXXXXXXXXX/R   
-from XXXXXXXXXXXXXXXXX/K   
-from XXXXXXXXXXXXXXXXX/L   
-from XXXXXXXXXXXXXXXXX/G   
-from XXXXXXXXXXXXXXXXX/R 

출력은 다음과 같아야 합니다.

-from XXXXXXXXXXXXXXXXX/D   
-this XXXXXXXXXXXXXXXXX/R   
-from XXXXXXXXXXXXXXXXX/K   
-from XXXXXXXXXXXXXXXXX/L   
-from XXXXXXXXXXXXXXXXX/G   
-from XXXXXXXXXXXXXXXXX/R  

다 괜찮아 ,,, sedawk.grep

답변1

  • 이전 줄이 D끝나면,
    • 현재 줄이 R끝나면,
      • 그런 다음 첫 번째 단어( -from)를 로 바꿔야 합니다 -this.

awk스크립트:

# if the prev. line ended with D, and the current with R, replace first word
# optionally add && $1 == "-from"
has_d && /R$/ { $1 = "-this"; }
# print the current line, pretend that d is not matched yet
{ print; has_d = 0; }
# if line ends with D, set flag
/D$/ { has_d = 1; }

짧막 한 농담:

awk 'has_d&&/R$/{$1="-this"}{print;has_d=0}/D$/{has_d=1}' yourfile

답변2

존재하다 sed:

sed '/D$/{N;/R$/s/\n-from/\n-this/}' your_file

확장된 코멘트:

sed ' /D$/{                          # If the current line ends in D
            N;                       # Append the next line to the pattern space
            /R$/s/\n-from/\n-this/   # If you find R at end-of-line, substitute
      }' your_file

관련 정보