패턴과 일치하는 행을 건너뛰고 조건과 일치하는 행을 삭제합니다.

패턴과 일치하는 행을 건너뛰고 조건과 일치하는 행을 삭제합니다.

다음 형식의 파일이 있습니다.

Q
L
A D
1 10
2 21
3 22
4 5
5 9

"Q" 또는 "L"로 시작하는 행을 건너뛰고 두 번째 열 값이 10보다 큰 행을 삭제하고 전체 콘텐츠를 새 파일에 저장해야 합니다. 출력 파일 예:

Output file 1
    Q
    L
    A D
    1 10
    4 5
    5 9 

Output file 2
1
4
5

암호:

while read -r line; if [[ $line == "A" ]] ||[[ $line == "Q" ]]||[[ $line == "L" ]] ; then 
awk '$2 < "11" { print $0 }' test.txt
awk '$2 < "11" { print $1 }' test1.txt
done < input.file

답변1

당신은 간단하게 사용할 수 있습니다정규식문자 A, L 또는 Q와 조건으로 시작하는 행을 필터링합니다. awk다음과 같은 경우에 적합합니다.

awk '($0 ~ /^[AQL]/ || $2 < 11) { print $0 }' < input.file > output.file1
awk '($0 ~ /^[^AQL]/ && $2 < 11) { print $1 }' < input.file > output.file2

답변2

다음 명령을 사용하여 테스트하면 훌륭하게 작동합니다.

주문하다

awk '$1 !~ "Q|L" && $2 <11{print $1}' filename

산출

awk '$1 !~ "Q|L" && $2 <11{print $1}' filename
1
4
5

관련 정보