Заменить строку из четных строк и второго столбца файла с помощью оболочки

Попробуйте это . Это подключаемый модуль Nagios -в виде Perl-скрипта. Вам не нужно много знать этот язык, чтобы использовать его. Просто запустите его без каких-либо аргументов, чтобы получить помощь. Если он вам не подходит, проверьте другие здесь .

Обратите внимание, :вам может потребоваться установить некоторые пакеты (, особенно perl-библиотеку IBM SVC ), чтобы заставить ее работать.

0
04.02.2020, 18:37
2 ответа

Попробуйте также этот awkподход:

awk  -F"[ ]" '!(NR%2) {sub (/gene/, "cdc ", $3); $NF = "ID=" $NF}  1' file
NC_002929.2 Seq gene    3653563 3653611.   +  .   Pred285
NC_002929.2 Seq cdc     3653563 3653611.   +  .   ID=Pred285
NC_002929.2 Seq gene    2902987 2903162.   -  .   rgtA
NC_002929.2 Seq cdc     2902987 2903162.   -  .   ID=rgtA
0
28.04.2021, 23:24

Предполагая, что у вас есть GNU sed с оператором адреса n skip m и что строка geneне может встречаться нигде перед вторым столбцом:

sed '2~2s/gene/cds/' file.gff

Обратите внимание, что sed не имеет внутренней концепции "столбцов" -2~2здесь относится к каждой 2-й строке , начиная со 2-й строки , и замена соответствует первое вхождение geneв строке.


Чтобы применить замену к последнему «столбцу», вам нужно будет сделать что-то вроде сопоставления не -пустых символов, привязанных к концу строки, например.

sed -r '2~2{s/gene/cds/; s/[^[:blank:]]+$/ID=&/;}' file.gff

Если вы хотите что-то действительно ориентированное на столбцы -, попробуйте awk, perl или miller.

1
28.04.2021, 23:24

Теги

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