Решение было простым. Я просто неправильно установил переменную PATH. Новый каталог intltool в моем домашнем каталоге нужно было добавить в PATH. Я действительно пытался сделать это, но испортил команду, чтобы установить это.
Предположим, что разделителями полей в исходном файле являются табуляции (и/или вы хотите, чтобы выходные данные были разделены табуляцией -), тогда вы можете использовать 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
.
В вашем сообщении используются табуляции для разделения полей, я воспользуюсь этим.
Самое простое решение, которое сохранит все пробелы и табуляции в строке, — убедиться, что разделитель полей равен одному символу (, если в строке нет начальных символов):
$ awk -F '[\t]' -v OFS='\t' '{$1="("$1")"}1' file.txt1
(8) 089.3 96.72 61 2 0 4240 4300 2420 2360 3e-20 102
(8) 089.3 96.67 60 0 1 4239 4296 2419 2360 1e-18 96.9
Примечание :Если поле окружено пробелами (например ), это произойдет:
awk -F '[\t]' -v OFS='\t' '{$1="("$1")"}1'
( 8 ) 089.3 96.72 61 2 0 4240 4300 2420 2360 3e-20 102
( 8 ) 089.3 96.67 60 0 1 4239 4296 2419 2360 1e-18 96.9
Примечание. :При наличии повторяющихся разделителей табуляциинумерация полей изменится (еще на одно поле для каждой дополнительной вкладки ).