예를 들어 탭으로 구분된 텍스트 파일에는 다음 두 개의 열이 있습니다.
blah ABC_DE_23154_e53G_12
blah DEF_GH_23165_f35H_36
blah CED_BF_56412_c56T_21
다음 awk 스크립트를 사용하여 두 번째 밑줄 뒤의 특정 범위(23153에서 23167 사이)에 속하는 두 번째 열의 세 번째 숫자와 일치하는 행을 추출합니다(이것은 작동하지 않습니다).
awk -F "_" '$2>23153 && $2<23167' *.txt >> output.txt
"output.txt" 파일 내의 출력은 다음과 같아야 합니다.
blah ABC_DE_23154_e53G_12
blah DEF_GH_23165_f35H_36
각 파일에 약 8000줄의 데이터가 포함된 약 600개의 텍스트 파일이 있습니다.
고마워요, Plasma33
답변1
$2
첫 번째 문제는 awk 스크립트에 있다고 생각합니다. with $2
는 두 번째 열(DE, GH, BF,...)이고 비교하는 숫자가 있는 세 번째 열이 아니기 때문입니다.
그러면 조건이 있어야 하고, 조건이 충족되면 무엇을 하고 싶은지 정해야 합니다.
awk -F'_' '($3>23153 && $3<23167){print}' *.txt >> output.txt
에는 조건이 있고 ()
에는 동작이 있습니다 {}
.
편집하다:
주석에서 상기시켰듯이 {print}
작업이 기본값이므로 awk 스크립트를 더욱 단순화할 수 있습니다.
awk -F'_' '($3>23153 && $3<23167)' *.txt >> output.txt
답변2
파이썬을 사용해 보세요
k=open('filename','r')
for i in k:
k=i.strip().split('_')[2]
if int(k) > 23153<23167:
print i.strip()
산출
blah ABC_DE_23154_e53G_12
blah DEF_GH_23165_f35H_36
blah CED_BF_56412_c56T_21