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

Думаю, вы ищете

 ip a | awk '/inet.*enp[0-9]*s[0-9]*/ { print $NF " " gensub(/\/[0-9]*/,"",1,$2); }'

Обратите внимание, что я изменил соответствие для имени интерфейса, чтобы принимать больше, чем enp0s (В моей системе многие из моих интерфейсов являются enp2s *). Кроме того, я сопоставляю строки с «inet», это исключит адреса ipv6 («inet6» ).

0
20.06.2020, 16:19
2 ответа

Вы не можете легко создавать файлы XLS из bash, однако вы можете создавать файлы CSV и импортировать их в Excel.

cd DIRECTORY
rm list-of-headers.csv 2>/dev/null
for f in *; do
    head=$(sed -n -e '1s/"/""/g' -e '1p;q' < "$f")
    file=$(sed 's/"/""/g' <<< "$f")
    printf '"%s","%s"\n' "$file" "$head" >> list-of-headers.csv
done > list-of-headers.csv

Это создаст новый файл с именем list-of-headers.csvв каталоге, состоящем из двух разделенных запятыми -столбцов с именем файла и строкой заголовка.

  • sed -n -e '1s/"/""/g' -e '1p;q'дублирует любой"(для соответствия RFC 4180)в первой строке, распечатывает его и затем завершает работу (, поэтому sedне нужно читать все остальные строки в файле)
  • printf...добавит строку в целевой CSV
2
18.03.2021, 23:25

Использование headи GNUsed:

head -n 1 -v * | 
sed 'N;s/.* \(.*\).*\n\(.*\)/\1,\2/p;D'

Обратите внимание, :-vтребуется только в том случае, если имеется только один файл.

3
18.03.2021, 23:25

Теги

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