Как grep определенные строки и печатать только те, которые соответствуют символу

Добавлен пример ввода и вывода; примеры в первом разделе используют исходный пример ввода, чтобы показать подробные примеры по вариантам:

Исходный ввод в 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

сортирует второй поле для изменения порядка.

3
задан 8 January 2018 в 14:42

6 ответов

Используйте две команды greps:

grep '^FORMUL' *pdb | grep -vE 'C([3-9]|[12][0-9])'

В первой строке перечислены строки, соответствующие ^FORMUL, вторая удаляет (-v инвертирует совпадение), соответствующие C, за которым следует цифра между 3 и 9 или двухзначные числа, начинающиеся с 1 или 2 (поэтому каждое число больше 3 будет удалено).

4
ответ дан 22 May 2018 в 15:43
  • 1
    SInce Я новичок и не могу голосовать за полезные ответы. Я должен поблагодарить вас здесь. Одно дело, так как у меня много примеров C10-99, эта команда их не сохранит, но я хочу сохранить их. Могу ли я каким-то образом выбрать, что если он встретит диапазон C3-C99, напечатайте их? – djordje 6 January 2018 в 11:17
  • 2
    Посмотрите, помогает ли обновленная команда – muru 6 January 2018 в 11:22
  • 3
    Да, сейчас все в порядке. Спасибо Большое. Всего наилучшего! – djordje 6 January 2018 в 12:07
  • 4
    Эй, одно. Я выясню, что этот код удалит все строки, в которых он нашел C, за которым следует номер 2 или более. В моем исходном файле это также можно найти: 3OC7.pdb: FORMUL 2 EDO C2 H6 O2 – djordje 8 January 2018 в 14:31
  • 5
    @djordje, то, вероятно, проще просто удалить имя файла из выхода: grep -h '^FORMUL' *pdb | ... – muru 8 January 2018 в 14:42

Используйте две команды greps:

grep '^FORMUL' *pdb | grep -vE 'C([3-9]|[12][0-9])'

В первой строке перечислены строки, соответствующие ^FORMUL, вторая удаляет (-v инвертирует совпадение), соответствующие C, за которым следует цифра между 3 и 9 или двухзначные числа, начинающиеся с 1 или 2 (поэтому каждое число больше 3 будет удалено).

4
ответ дан 17 July 2018 в 23:45

Используйте две команды greps:

grep '^FORMUL' *pdb | grep -vE 'C([3-9]|[12][0-9])'

В первой строке перечислены строки, соответствующие ^FORMUL, вторая удаляет (-v инвертирует совпадение), соответствующие C, за которым следует цифра между 3 и 9 или двухзначные числа, начинающиеся с 1 или 2 (поэтому каждое число больше 3 будет удалено).

4
ответ дан 24 July 2018 в 17:05

Я думаю, что это должно сработать:

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

1
ответ дан 22 May 2018 в 15:43

Я думаю, что это должно сработать:

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

1
ответ дан 17 July 2018 в 23:45

Я думаю, что это должно сработать:

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

1
ответ дан 24 July 2018 в 17:05

Другие вопросы по тегам:

Похожие вопросы: