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

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

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

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

3 Captain America

(без ':')

Какие-либо предложения??

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

4 ответа

Можно использовать sed наряду с grep для достижения этого.

grep -n 'Captain' sometextfile.txt | sed 's/:/ /'

Эта команда sed находит шаблон : и заменяет его (пространство).

Общий синтаксис - sed 's/find/replace/'

Этот метод заменит только первое вхождение : в каждой строке с . Поэтому, даже если строка в текстовом файле будет содержать :, это останется незатронутым.

5
ответ дан 10 November 2019 в 08:13

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

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

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

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

[ 117] Хотя, как указывает Муру, это удалит все двоеточия в строке.

1
ответ дан 10 November 2019 в 08:13

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

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

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

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

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

0
ответ дан 10 November 2019 в 08:13

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

awk '/Captain America/ {printf "%s %s\n", NR, $0}'
0
ответ дан 3 December 2019 в 06:33

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

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