다음 형식의 파일이 있습니다.
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