условно добавить столбец в файл awk - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть файл, который выглядит следующим образом

--- 1:14567 14567 A C 0 0 1
--- 1:32424 34424 A C 0 0 1
rsid124 35245 C G 0 0 1

Я хочу добавить первое поле (---) только в те строки, которые еще не имеют ---

Требуемый вывод будет выглядеть следующим образом:

--- 1:14567 14567 A C 0 0 1
--- 1:32424 34424 A C 0 0 1
--- rsid124 35245 C G 0 0 1

Если это проще, обходной путь - удалить --- с помощью vim или другого текстового редактора, но я хотел бы знать, как добавитьстолбец в зависимости от строки

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Перефразировано:

Я хочу добавить первое поле --- только в те строки, у которых его еще нет.

Это довольно легкочтобы сделать с awk, просто используйте:

awk '$1 != "---" { print "--- "$0 } { print }" inputFile >outputFile

Это изменит все строки, где первый столбец не такой, как ожидалось, с префиксом к желаемой строке.Все остальные строки будут напечатаны как есть.

0 голосов
/ 24 сентября 2018

Если вы не возражаете против использования sed, может работать следующее:

$ sed -i  's/^[^-]\(.*\)/--- \1/g' file.txt

В противном случае версия awk будет выглядеть так:

awk '{ if ( $1 == "---" ) { print $0 } else { print "---", $0 }   }' file.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...