Использование grep для печати номеров строк
Я хотел бы использовать команду grep, чтобы напечатать номер строки для строки, которую я ищу. Тем не менее, когда я использовал команду grep -n
он печатает номер строки с двоеточием: рядом с ним. Есть ли способ, которым я могу использовать то же самое grep -n
Команда для печати номера строки, за которой следует: двоеточие?
$ grep -n 'Captain' sometextfile.txt
3: Captain America
Я хотел бы вместо этого напечатать,
3 Captain America
(без ':')
Какие-либо предложения??
4 ответа
Ты можешь использовать sed
вместе с grep
для достижения этой цели.
grep -n 'Captain' sometextfile.txt | sed 's/:/ /'
Эта команда sed находит шаблон :
и заменяет его (пространство).
Общий синтаксис - sed 's/find/replace/'
Этот метод заменит только первый случай :
в каждой строке , Поэтому, даже если строка в текстовом файле содержит
:
, это останется неизменным.
Если вы просто хотите удалить двоеточие (а не заменить его пробелом), вы можете передать вывод вашего оператора grep через tr
, Ваша команда будет что-то вроде:
grep -n 'Captain' sometextfile.txt | tr -d ':'
Если вы хотите заменить двоеточие пробелом, вы можете использовать:
grep -n 'Captain' sometextfile.txt | tr ':' ' '
Хотя, как указывает Муру, это удалит все двоеточия в строке.
Можете ли вы попробовать, поможет ли вам эта команда
awk '/Captain America/ {printf "%s %s\n", NR, $0}'
Вот мои два цента по этому вопросу, используйте подфункцию 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=" "