/etc/shadow И простофиля

Проблема с -v опция или с var=value аргументы awk это, они не могут использоваться для произвольных данных начиная с ANSI C escape-последовательности (как \n, \b...) расширены в них (и с GNU awk 4.2 или выше, если значение запускается с @/ и концы в /, это рассматривают как regexp тип переменной).

Альтернатива должна использовать ARGV или ENVIRON awk массивы:

awk -F / 'BEGIN{$0 = ARGV[1]; print $5}' "$path1"

Или:

export path1
awk -F / 'BEGIN{$0 = ENVIRON["path1"]; print $5}'

Или:

path1="$path1" awk -F / 'BEGIN{$0 = ENVIRON["path1"]; print $5}'

Теперь, если все, что Вы хотите, разделяется переменная оболочки, Вам, возможно, не понадобится awk.

Во всех оболочках POSIX:

IFS=/; set -f
set -- $path1
printf '%s\n' "$5"

3
25.02.2014, 01:44
2 ответа
[115741]Проблема в том, что вы установили [116052]FS[116053] после [116054]awk[116055] прочтения первого входа, поэтому он будет использовать значение по умолчанию [116056]FS[116057], которое является [116058]пробелом[116059] для записи корня.

Вы должны установить [116060]FS[116061] до того, как [116062]awk[116063] прочитает любой вход. Есть много способов сделать это:

или:

или:

6
27.01.2020, 21:10

Или

3
27.01.2020, 21:10

Теги

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