2016-03-05 2 views
0

Я использовал команду sed в оболочке, чтобы удалить все, кроме чисел из моей строки.Создание дубликатов Sed

Теперь моя строка содержит три 0s среди других чисел и после запуска

sed 's/[^0-9]*//g' 

Вместо того, чтобы три 0s, я теперь 0 01 и 02.

Как я могу предотвратить СЭД от делать это так что у меня могут быть три нуля?

образца строки:

0  cat 
42  dog 
24  fish 
0  bird 
0  tiger 
5  fly 
+3

Вы можете указать образец входной строки? – MaxU

+0

Обновлено сообщение. Номер изображения и животное рядом с ним в колонке. – Daeto

+0

, так что вы хотите сохранить только нули? – MaxU

ответ

3

Теперь, когда мы знаем, что цифры в именах файлов в выходе из утилиты du вызвали проблему (кончик шляпы Lars Fischer), просто используйте cut для извлечения только первого столбца (который содержит данные, представляющие интерес, размер каждого файла/субдира в блоках):

du -a "$var" | cut -f1 

du выводит данные с разделителями табуляции, а вкладка также является разделителем по умолчанию cut, поэтому все, что необходимо, - это запросить 1-ое поле (-f1).


В ретроспективе, ваша проблема не была связана с sed; ваши данные образца просто не отражали ваши фактические данные. При задании вопроса всегда стоит создать MCVE (Minimal, Complete, and Verifiable Example).

+0

Спасибо большое, что сделал трюк! Глупый я, я не понимал, что у некоторых файлов есть номера в их именах! – Daeto

0

попробовать это:

du -a "$var" | sed -e 's/ .*//' -e 's/[^0-9]*//g' 
Смежные вопросы