Мой вывод команды выглядит так:
File Size : 23 kB
File Size : 9.8 kB
File Size : 9 kB
File Size : 128 kB
File Size : 921.8 kB
Как извлечь из этого к этому:
23kB
9.8kB
9kB
128kB
921.8kB
Я пытался использовать sed с командой
sed 's/^..................................//'
вывод -
23 kB
9.8 kB
9 kB
128 kB
921.8 kB
, и на этом мои знания о sed и regex заканчиваются. Как это сделать?
Вы хотите удалить все перед двоеточием и удалить все пробелы:
sed 's/.*://; s/ //g' file
Первые замены замены .*:
, т.е. что-либо до последнего двоеточия, ни с чем. Вторая замена ничем заменяет пространство глобально.
Я использовал бы cut
вместо sed
:
Установите разделитель на двоеточие и выберите второе поле:
cut -d ':' -f 2 file
Вывод:
23 kB
9.8 kB
9 kB
128 kB
921.8 kB
Затем удалите пробелы с tr -d
:
cut -d ':' -f 2 file | tr -d ' '
Вывод:
23kB
9.8kB
9kB
128kB
921.8kB
Можно объединить отдельные замены в цепочку:
's/^.*: //; s/ //'
Но парсинг подробных команд как этот всегда является небольшим chonky и ненадежный. Я предложил бы, чтобы чему-то понравилось, находят (с любыми фильтрами, в которых Вы нуждаетесь), и объединение в цепочку это в stat
, как это:
find . -exec stat --printf="%s\n" {} +
Посмотрите man stat
для большего количества опций на выводе.
Используя awk
:
awk -F\: '{gsub(/ /, ""); print $2}'
Это будет использовать :
как разделитель, удалите все пробелы и распечатайте второй столбец.