Производительность конвейерных команд во встроенном Linux

Это приведет к удалению первых десяти строк из всех файлов, имена которых варьируются от file00 до file99 :

sed -i.bak -n '11,$p' file[0-9][0-9]

Для этого может потребоваться GNU sed , которая в OSX известна как gsed . Для других seds попробуйте:

find file[0-9][0-9] -maxdepth 0 -type f -exec sed -i.bak -n '11,$p' {} \;

Как это работает:

  1. -i.bak сообщает sed изменить файлы на месте, создав файл резервной копии с расширением .bak

  2. -n сообщает sed не печатать никаких строк, если мы явно не попросим об этом.

  3. 11, $ p указывает sed печатать строки, начинающиеся со строки с номером 11 и продолжающиеся до последней строки (обозначенной $ ) в файле.

  4. file [0-9] [0-9] - это глобус оболочки, который будет расширяться, чтобы соответствовать всем файлам, имена которых состоят из file , за которым следуют две цифры.

Альтернатива

Логика может быть инвертирована. Вместо того, чтобы явно печатать строки 11 и последующие, мы могли бы (подсказка: JigglyNaga) удалить первые десять строк:

sed -i.bak '1,10d' file[0-9][0-9]
3
03.02.2016, 01:40
0 ответов

Теги

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