Bash: удалить определенный диапазон символов из определенной строки - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть текстовый файл, и я хочу удалить символы 23-28, ТОЛЬКО из строки 11:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Таким образом, результат будет:

Lorem ipsum dolor sit consectetur adipiscing elit.

Можно ли это сделатьс помощью команды sed, awk или cut?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019
awk 'NR==11{$0=substr($0,1,22) substr($0,29)} 1' file
0 голосов
/ 28 февраля 2019

sed также может сделать это.

sed -E '11 s/^(.{22}).{6}(.*)/\1\2/' file

В строке 11 (точно) запомните первые 22 символа, игнорируйте следующие 6, запомните остальную часть строки.Замените строку запомненными частями.

Везде, просто печатайте как есть.

0 голосов
/ 28 февраля 2019

Не могли бы вы попробовать следующее (так как образцы не предоставлены, поэтому не могли проверить это).Также я предположил, что вам нужно выполнить эту операцию с 11-й строки и до последней строки Input_file.

awk 'FNR>10{print substr($0,1,22) substr($0,29);next} 1'   Input_file

Если вы хотите удалить символы с 23 по 28 в 11-й строке, НЕ все строки, тогда попробуйтеследующий.

awk 'FNR==11{print substr($0,1,22) substr($0,29);next} 1'   Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...