Как всегда печатать вывод с определенным количеством цифр с помощью AWK

Для меня есть 2 группы файлов, в которых можно определить $PATH:
1. Файлы bash, такие как ~/.profile, ~/.bashrc и их эквиваленты /etc
2. /etc/enviroment и ~/.pam _окружение
Некоторые из этих мест являются глобальными для всех пользователей, а некоторые зависят от пользователя.
Я рекомендую вам написать команду, которую вы использовали, в одном из этих мест, помня, что файлы с~работают только с пользователем, который использует домашний каталог, в котором находится файл.
Также помните, если вы пропишете путь, например, ~/.bashrc, будучи, например, пользователем Robertus, если вы измените на root, путь изменится на root, следуя его собственному ~/.bashrc и компании..

Надеюсь, мой ответ был вам полезен

0
10.07.2019, 20:10
2 ответа

Ага, printfтвой друг. Используйте %.2dдо 0 -дополните число до 2 цифр:

find. -mtime -5 -type f -exec ls -ltr {} \; | 
    awk '{printf "cp -p %s %.2d\n", $9, $7}'

Чтобы проиллюстрировать это, я выполнил следующее в файле, содержащем ваш исходный вывод:

$ cat file
cp -p./18587_96xxdata.txt 10
cp -p./16947_96xxdata.txt 8
cp -p./32721_96xxdata.txt 9
cp -p./32343_96xxdata.txt 9
cp -p./32984_96xxdata.txt 10
$ awk '{printf "%.2d\n", $NF}' file
10
08
09
09
10

Пожалуйста, обратите внимание на очень хорошее замечание , поднятое @edmorton . Разбор ls очень хрупок. Решение Эда намного лучше.

0
28.01.2020, 02:22

См.https://mywiki.wooledge.org/ParsingLsи https://mywiki.wooledge.org/Quotes, а затем сделайте это:

$ find. -mtime -5 -type f -printf "cp -p '%p' '%Ad'\n"
cp -p './bbbb.csv' '09'
cp -p './cccc.csv' '10'
cp -p './out1.txt' '09'
cp -p './out2.txt' '05'
3
28.01.2020, 02:22

Теги

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