Добавлен пример ввода и вывода; примеры в первом разделе используют исходный пример ввода, чтобы показать подробные примеры по вариантам:
Исходный ввод в Original_File:
User1 US
User1 NG
User2 US
User3 US
User4 US
User5 US
Вы может пропустить часть userN для uniq с опцией -f, чтобы пропустить ведущие поля - разделенные пробелом:
$ sort -t" " -k1,1 Original_File | uniq -f 1
User1 NG
User1 US
Для того же порядка, что и в примере вывода, вы можете отменить sort - это изменит значения «метки» для уникальных строк:
$ sort -r -t" " -k1,1 Original_File | uniq -f 1
User5 US
User1 NG
Обратите внимание на User5 в первой строке результата. Если это неприемлемо, просто выполните еще раз:
$ sort -t" " -k1,1 Original_File | uniq -f 1 | sort -t" " -k1,1 -r
User1 US
User1 NG
Если часть UserN не разделена пробелом, но имеет фиксированную длину, вы можете пропустить ее для uniq с помощью опции -s ]:
$ sort -t" " -k1,1 Original_File | uniq -s 6
User1 NG
User1 US
С обновленным примером ввода это команда для создания требуемого порядка сортировки:
$ sort -t" " -k1,1 Original_File | uniq -f 1 | sort -t" " -k1,1 -k2,2r
User1 US
User1 NG
User4 US
User4 EN
сортирует второй поле для изменения порядка.
Используйте две команды greps:
grep '^FORMUL' *pdb | grep -vE 'C([3-9]|[12][0-9])'
В первой строке перечислены строки, соответствующие ^FORMUL, вторая удаляет (-v инвертирует совпадение), соответствующие C, за которым следует цифра между 3 и 9 или двухзначные числа, начинающиеся с 1 или 2 (поэтому каждое число больше 3 будет удалено).
Используйте две команды greps:
grep '^FORMUL' *pdb | grep -vE 'C([3-9]|[12][0-9])'
В первой строке перечислены строки, соответствующие ^FORMUL, вторая удаляет (-v инвертирует совпадение), соответствующие C, за которым следует цифра между 3 и 9 или двухзначные числа, начинающиеся с 1 или 2 (поэтому каждое число больше 3 будет удалено).
Используйте две команды greps:
grep '^FORMUL' *pdb | grep -vE 'C([3-9]|[12][0-9])'
В первой строке перечислены строки, соответствующие ^FORMUL, вторая удаляет (-v инвертирует совпадение), соответствующие C, за которым следует цифра между 3 и 9 или двухзначные числа, начинающиеся с 1 или 2 (поэтому каждое число больше 3 будет удалено).
Я думаю, что это должно сработать:
awk '/^FORMUL/ && !match($4, /C[3-9]?[0-9]/) {print;}' *.pdb
?: иметь онлайн-источник данных, который мы могли бы попробовать?
ref (стр. 154): ftp: //ftp.wwpdb .org / паб / PDB / DOC / format_descriptions / Format_v33_A4.pdf
Я думаю, что это должно сработать:
awk '/^FORMUL/ && !match($4, /C[3-9]?[0-9]/) {print;}' *.pdb
?: иметь онлайн-источник данных, который мы могли бы попробовать?
ref (стр. 154): ftp: //ftp.wwpdb .org / паб / PDB / DOC / format_descriptions / Format_v33_A4.pdf
Я думаю, что это должно сработать:
awk '/^FORMUL/ && !match($4, /C[3-9]?[0-9]/) {print;}' *.pdb
?: иметь онлайн-источник данных, который мы могли бы попробовать?
ref (стр. 154): ftp: //ftp.wwpdb .org / паб / PDB / DOC / format_descriptions / Format_v33_A4.pdf