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