Вот не -изящное awk
решение:
{
split($3, a, "|")
split($4, b, "|")
if (a[2] > b[2]){
$3=b[1]"|"b[2]
$4=a[1]"|"a[2]
}
split(arr[$3" "$4], c, " ")
if ($8 > c[8]){
arr[$3" "$4] = $0
}
}
END{
for (item in arr){
print(arr[item])
}
}
Выполнить с
awk -f script.awk input
Он не сохраняет интервал, и порядок является случайным.
Если вы просто хотите удалить все разрешения для файлов, кроме разрешений владельца, вы можете просто:
chmod go-rwx <list_of_filenames>
Это приведет к удалению разрешений на чтение, запись и выполнение для группы и других пользователей, независимо от того, имеют ли файлы уже эти разрешения или нет.