Почему поля не разделены пробелами в выводе этого примера?

A partir de ese momento, sólo podrán acceder a ellos los programas que ya tenían abiertos esos dispositivos. Por lo tanto, no es forma de desmontar sistemas de archivos. Y con udev, un reinicio podría restaurar esos dispositivos. Una forma extraña de aprender Unix.

0
18.07.2017, 08:47
2 ответа

Вы должны убедить awkв том, что поля изменились, чтобы принудительно переформатировать их с помощью OFS. Если сделать замену всего $0как в вашем случае, то awkне видит необходимости разбивать его на части и переформатировать обратно.

Вы можете сделать что-то подобное, чтобы он признал, что все изменилось:

awk -F'[,/]' '{sub(/\/[0-9]+/, "/" ($2+3) ); $1=$1; print $0}'

$1=$1делает свое дело:)

Обратите внимание, что sub()не изменяет $2-, а сканирует и изменяет $0и обновляет его значением $2+3. Но он не обновляет $2, он обновляет $0, следовательно, он не запускает переформатирование.

1
28.04.2021, 23:58

Я считаю, что вам будет лучше использовать:

awk -F'[,/]' '{$2=($2+3)}1' infile

с таким файлом:

$ cat infile
The Ubiquitous Backslash/49,Black
The Ubiquitous Backslash/17,Black
Statements and Functions/399,Black,notBold

Вы получите:

$  awk -F'[,/]' '{$2=($2+3)}1' infile
The Ubiquitous Backslash 52 Black
The Ubiquitous Backslash 20 Black
Statements and Functions 402 Black notBold

ХТХ

1
28.04.2021, 23:58

Теги

Похожие вопросы