Использование grep для печати номеров строк

Я хотел бы использовать команду grep для печати номера строки для строки, которую я ищу. Однако, когда я использовал команду grep -n, она печатает номер строки с двоеточием: рядом с ней. Есть ли способ, которым я могу использовать ту же команду grep -n для печати номера строки, за которой следует: двоеточие?

$ grep -n 'Captain' sometextfile.txt
3: Captain America

Я бы хотел, чтобы вместо этого напечатал

[ f2]

(без ':')

Любые предложения

1
задан 10 December 2014 в 21:56

3 ответа

Если вы просто хотите удалить двоеточие (а не заменить его пробелом), вы можете передать вывод своей команды grep через tr. Ваша команда будет выглядеть примерно так:

grep -n 'Captain' sometextfile.txt | tr -d ':'

Если вы хотите заменить двоеточие пробелом, вы можете использовать:

grep -n 'Captain' sometextfile.txt | tr ':' ' ' [ ! d3]

Хотя, как указывает муру, это удалит любые двоеточия в строке.

1
ответ дан 24 May 2018 в 01:07
  • 1
    А что, если в строках, содержащих соответствие, есть :? – muru 10 December 2014 в 22:09

Можете ли вы попробовать, поможет ли эта команда вам

awk '/Captain America/ {printf "%s %s\n", NR, $0}'
0
ответ дан 24 May 2018 в 01:07

Вот мои два цента на вопрос, используйте вспомогательную функцию awk:

grep -n 'Captain' file.txt | awk '{sub(":"," "); print }'

grep -n 'Captain' file | awk '{sub(":Captain"," Captain"); print }'

И вот вырез (который удаляет все следы :, как в примере Dazzle):

grep -n 'Captain' file | cut -d":" -f1- --output-delimiter=" "

0
ответ дан 24 May 2018 в 01:07

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

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