Это не против интеллектуального актера, потому что как владелец, он может изменить ()файл в любое время, вернув свои разрешения.
Это может быть полезно против программ, если вы хотите, чтобы ваши собственные программы не играли с некоторыми вашими файлами по какой-либо причине.
Однако обычно проще удалить этот файл.
Это также может быть полезно, если базовый драйвер файловой системы не поддерживает chmod (). Например, режимы файла davfs или vfat определяются флагами монтирования, а не метаданными файловой системы.
Вы можете назначить разделитель выходных записей ORS
, который неявно добавляется к каждому оператору печати.
grep.... |
awk '{
ORS = ORS == "\n" ? "" : "\n"
print $3, $4
}'
Этот способ будет работать, поскольку две линии данных идут парами, одна за другой. Итак, для первой части мы делаем ORS нулевым, а для второй делаем новую строку. Запятая позаботится о разделении между третьим и четвертым полями.
Предполагая, что каждой строке ADDR
всегда предшествует USCDB
:
awk '$2 == "USCDB" { date = $3 " " $4 } $4 ~ /^ADDR=/ { print date, $3, $4 }' input
Это сохраняет дату в переменной date
при каждом обнаружении строки USCDB
. Когда строка ADDR
найдена, это значение выводится вместе с полями 3 и 4.
Я также более строго отношусь к сопоставлению двух строк ADDR
и USCDB
, сопоставляя их только в определенных полях, а не по всей строке.
Этот код не тестировался, так как у меня не было данных для его проверки (был скриншот, но теперь его тоже нет ).