다음 시나리오에 따라 txt 파일에서 다른 파일로 줄을 추출해야 합니다.
일치하는 첫 번째 패턴은 항상 단어로 시작하는 줄이 되고 identifier
, 두 번째 패턴은 다음으로 시작하는 첫 번째 줄이 됩니다 000
.
아래 예에서는
000: thislineneedstobeextracted
출력을 첫 번째 파일에 쓴 후 단어로 시작하는 줄 identifier
과 다음으로 시작하는 줄을 다시 추출합니다. 000
그러나 이번에는 파일에서 두 번째로 고유한 항목이 발견된 경우 다음 예에서
000: alsothislineneedstobeextracted
출력은 두 번째 파일에 기록됩니다.
입력 예
identifier 767
linetobeignored
anotherlinetobeignored
000: thislineneedstobeextracted
000: alsothislineneedstobeextracted
blankline
identifier 7686
linetobeignored
anotherlinetobeignored
000: thislineneedstobeextracted
000: alsothislineneedstobeextracted
000: ayetanotherlineneedstobeextracted
출력 file1.txt 예:
000: thislineneedstobeextracted
identifier 767
identifier 7686
예제 출력 file2.txt:
000: alsothislineneedstobeextracted
identifier 767
identifier 7686
답변1
사용해 보세요앗
awk '
/^id/{
if(line[1]){
for(n in line)print line[n],i,$0 >> "file"n".txt"
delete(line)
}
c=0
i=$0
}
/^000:/{
line[++c]=$0
}
END{
if(line[1]){
for(n in line)print line[n],i,$0 >> "file"n".txt"
}
' OFS=\\n txt.file