Изменение имени файла

Не кажется слишком сложным проанализировать файл журнала, как показано без предложенного #12345магического разделителя. Я буду первым, кто укажет, что это предложение не удовлетворяет " Я хочу, чтобы текст в каждом поле мог содержать ЛЮБОЙ символ ", но я все равно предложу это на на том основании, что имена хостов, имена пользователей и временные метки , вероятно, не содержат пробелов.

cat log

ID Host User Message Timestamp
1 host1 user1 This user did this this and that 11:11:11
2 host1 user2 This other user did this new thing 11:11:51

while IFS=' ' read -r id host user message
do
    timestamp="${message##* }" message="${message% *}"
    printf "%s - %s - %s - %s - %s\n" "$id" "$host" "$user" "$message" "$timestamp"
done <log

ID - Host - User - Message - Timestamp
1 - host1 - user1 - This user did this this and that - 11:11:11
2 - host1 - user2 - This other user did this new thing - 11:11:51
0
15.09.2021, 19:44
1 ответ
Комментарий

@Henrik supports the communityуместен. Кроме того, я всегда выступаю за распечатку команд, которые должны быть выполнены, а затем внимательно просматриваю эти команды. Это дает вам встроенную -функцию пробного запуска. Если команды выглядят правильно, снова запустите сценарий и направьте вывод на sh. OTOH, если команды неверны, то никакого ущерба не было нанесено.

for f in *0.txt
do
    printf 'mv -- %q %q\n' "$f" "${f%.txt}.doc"
done

Спасибо Stéphane Chazelas за предложение более безопасного использования директивы printf's %q.

1
15.09.2021, 21:01

Теги

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