Использование 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=" "