grep 및 awk를 사용하여 인수가 100보다 큰 파일에서 줄 추출

grep 및 awk를 사용하여 인수가 100보다 큰 파일에서 줄 추출

파일이 있고 다음 출력 파일을 사용하여 사양에 따라 스크립트를 생성해야 합니다.

입력 파일에는 출력에 포함되어야 하는 처음 28줄의 헤더가 있습니다. 입력의 일부 줄에는 특정 매개변수 ZH:모든 값(예: ZH:100 또는 ZH:50)이 있습니다. ZH 매개변수가 위치한 열은 행마다 다릅니다.

내 출력 파일에는 헤더 라인과 해당 값이 100보다 큰 ZH 매개변수(예: ZH:105, ZH:200 등)가 포함된 라인이 포함되어야 합니다.

ZH 매개변수를 포함하지 않는 줄은 생략됩니다.

답변1

사용 headgrep:

(
# get header
head -n 28 file
# grep lines with ZH value > 100
grep -Ew "ZH:.:[1-9][0-9]{2,}" file
) > outfile

답변2

최소한의 예가 없으면 원하는 것이 무엇인지 추측하기가 어렵습니다.

어쨌든 매개변수를 사용하여 행을 awk필터링하려면 ZH다음 스크립트가 도움이 될 수 있습니다.

awk 'strtonum(gensub(/^.*ZH:.:([0-9]+).*$/, "\\1", "1"))>100' file

그러면 비슷한 필드를 포함한 모든 줄이 인쇄됩니다 ZH:<one character>:<some number>.

gensub와 관련된 숫자를 추출합니다 ZH. 그런 다음 숫자로 변환되어 숫자 100과 비교됩니다.

관련 정보