У меня есть файл следующего формата:
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
Вы можете использовать простое регулярное выражение для фильтрации строк, начинающихся с букв 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
Протестировано с помощью приведенной ниже команды, все работает нормально
команда
awk '$1 !~ "Q|L" && $2 <11{print $1}' filename
выход
awk '$1 !~ "Q|L" && $2 <11{print $1}' filename
1
4
5