Предположим, что разделителями полей в исходном файле являются табуляции (и/или вы хотите, чтобы выходные данные были разделены табуляцией -), тогда вы можете использовать awk
вот так:
awk -F '\t' -v OFS='\t' '{ $1 = sprintf("(%s)", $1) } 1' file
Это модифицирует первое поле, а затем выводит повторно -сформированную строку с измененным полем. 1
в конце вызывает вывод и может быть заменен на { print }
.
Ваш код делает что-то подобное, но вы используете $0
, то есть содержимое всей строки , а не только первого поля.
Вы также можете использовать sed
, чтобы оставить остальную часть строки нетронутой:
sed -E 's/^([^[:blank:]]+)/(\1)/' file
Это соответствует любой не-пустой строке символов в самом начале строки и заменяет их той же строкой символов в круглых скобках.
Другой вариант с sed
, который сначала вставляет (
в начале строки, а затем вставляет )
перед первым пустым символом («пустой» символ означает пробел или табуляцию):
sed -E -e 's/^/(/' -e 's/([[:blank:]])/)\1/' file
Решение awk
является более гибким, так как позволяет легко изменять любое поле в строке, но решения sed
позволяют сохранить разделители, которые есть в исходном файле., будь то несколько пробелов или вкладок. Я включил сюда sed
решения только потому, что вы хотели изменить первое поле в строке, а это поле легко (найти с помощью )программы sed
.
path_beg
отсутствует в mode tcp
. См., например,https://serverfault.com/questions/736694/how-to-select-different-backend-based-on-uri-when-using-mode-tcp