Думаю, вы ищете
ip a | awk '/inet.*enp[0-9]*s[0-9]*/ { print $NF " " gensub(/\/[0-9]*/,"",1,$2); }'
Обратите внимание, что я изменил соответствие для имени интерфейса, чтобы принимать больше, чем enp0s (В моей системе многие из моих интерфейсов являются enp2s *). Кроме того, я сопоставляю строки с «inet», это исключит адреса ipv6 («inet6» ).
Вы не можете легко создавать файлы 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 Использование head
и GNUsed
:
head -n 1 -v * |
sed 'N;s/.* \(.*\).*\n\(.*\)/\1,\2/p;D'
Обратите внимание, :-v
требуется только в том случае, если имеется только один файл.