adduser, addgroup «используемая группа»

При условии согласованного формата файла с помощью bash вы можете читать файл построчно, проверять, соответствует ли он заданному формату, а затем выполните преобразование:

while IFS= read -r i; do [[ $i =~ ^#([0-9]{10})$ ]] && \
      date -d@"${BASH_REMATCH[1]}"; done <file.txt

BASH_REMATCH - это массив, первым элементом которого является первая захваченная группа в сопоставлении Regex, = ~ , в данном случае эпоха.


Если вы хотите сохранить файловую структуру:

while IFS= read -r i; do if [[ $i =~ ^#([0-9]{10})$ ]]; then printf '#%s\n' \
   "$(date -d@"${BASH_REMATCH[1]}")"; else printf '%s\n' "$i"; fi; done <file.txt

это выведет измененное содержимое в STDOUT, чтобы сохранить его в файле, например. out.txt :

while ...; do ...; done >out.txt

Теперь, если хотите, вы можете заменить исходный файл:

mv out.txt file.txt

Пример:

$ cat file.txt
#1472047795
ll /data/holding/email
#1472047906
cat /etc/rsyslog.conf
#1472048038
ll /data/holding/web

$ while IFS= read -r i; do [[ $i =~ ^#([0-9]{10})$ ]] && date -d@"${BASH_REMATCH[1]}"; done <file.txt
Wed Aug 24 20:09:55 BDT 2016
Wed Aug 24 20:11:46 BDT 2016
Wed Aug 24 20:13:58 BDT 2016

$ while IFS= read -r i; do if [[ $i =~ ^#([0-9]{10})$ ]]; then printf '#%s\n' "$(date -d@"${BASH_REMATCH[1]}")"; else printf '%s\n' "$i"; fi; done <file.txt
#Wed Aug 24 20:09:55 BDT 2016
ll /data/holding/email
#Wed Aug 24 20:11:46 BDT 2016
cat /etc/rsyslog.conf
#Wed Aug 24 20:13:58 BDT 2016
ll /data/holding/web
3
10.10.2017, 16:50
0 ответов

Теги

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