У меня есть файл cve.txt с такими примерами:
delta.x
alpha.tri
blue.zia
Я хочу вырезать строку до точки и поместить себя как:
delta.x|delta
$ awk -F. '{ print $0"|"$1}' input
delta.x|delta
alpha.tri|alpha
blue.zia|blue
Мы сообщаем awk
, что .
является разделителем полей, а затем формируем вывод, как вы описываете, с помощью простого оператора print
. $0
— строка ввода; $1
— первое поле (i. е. все, что предшествовало первому.
).
sedподход:
sed 's/\([^.]*\)\.[^.]*/&|\1/' file
Выход:
delta.x|delta
alpha.tri|alpha
blue.zia|blue
Поскольку вы просили cut
решение:
paste -d\| input <(cut -d\. -f1 input)