Как получить список всех файлов и каталогов в текущем каталоге, второй символ которого является цифрой

Awkраствор:

awk '{ 
         if (NF == 2) {
             if ($1 in r) { 
                 a[r[$1]] = a[r[$1]] OFS $2; next 
             } 
             a[$1] = $2; r[$2] = $1; 
         } 
         else a[$1]; 
     }
     END{ for (i in a) print i, a[i]  }' file
  • NF == 2-условие, указывающее запись с 2 полями(NF-общее количество полей)
  • a-массив, который содержит либо «автономные» имена файлов (, которые не были переименованы ), например bи d, либо связь между исходным именем файла и его переименованной версией (, например.a -> f)
  • r-массив, который содержит противоположное отношение «переименованное имя файла» -> «начальное имя файла» (, например.f -> a)

Выход:

a f z
b 
c e
d 

В случае, если какое-то имя файла могло быть переименовано более одного раза -, используйте следующее расширенное решение:

awk '{ 
         if (NF == 2) {
             if ($1 in r) { 
                 a[r[$1]] = a[r[$1]] OFS $2; r[$2] = r[$1];
             } 
             else { a[$1] = $2; r[$2] = $1 } 
         } 
         else a[$1]; 
     }
     END{ for (i in a) print i, a[i]  }' file
-2
02.02.2020, 18:26
0 ответов

Теги

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