Вставьте файл с помощью awk - PullRequest
0 голосов
/ 18 марта 2019

Так что у меня это работает на сервере с awk 3.1.7, и когда я пытаюсь использовать на сервере с awk 4.0.2, это не похоже на работу.Я просто пытаюсь добавить имя файла 14 цифр, это цель.У меня нет версии perl при переименовании на всякий случай, если она была вызвана.

В любом случае, это мой код

ls 800001.1.pull | awk -F'.pull' '{ printf "%s %014s.pull%s\n", $0, $1, $2; }' | xargs -n 2 mv

Я получаю эту ошибку mv: '800001.1.pull' и'800001.1.pull' - это тот же файл

ls 800001.1.pull | awk -F'.pull' '{ printf "%s %014s.pull%s\n", $0, $1, $2; }' | xargs -n 2 mv
mv: ‘800001.1.pull’ and ‘800001.1.pull’ are the same file

Это то же самое, что работало на другом сервере в течение нескольких лет, и я не получаю сообщение об ошибке, я получаю файл с именем:

ls 800001.1.pull | awk -F'.pull' '{ printf "%s %014s.pull%s\n", $0, $1, $2; }' | xargs -n 2 mv
000000800001.1.pull

и вот почему я сказал это:

Я буду считать, что более новый awk обрабатывает разные разделители?

Ожидаемый вывод: 000000800001.1.pull

Исходный файл должен быть дополнен 0 до 14.

Спасибо!

1 Ответ

3 голосов
/ 18 марта 2019
$ echo 800001.1.pull | awk -F'.pull' '{ new=sprintf("%14s%s",$1,FS); gsub(/ /,0,new); print $0, new }'
800001.1.pull 000000800001.1.pull

$ echo 800001.12.345.pull | awk -F'.pull' '{ new=sprintf("%14s%s",$1,FS); gsub(/ /,0,new); print $0, new }'
800001.12.345.pull 0800001.12.345.pull
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...