AWK - вполне приличный инструмент для таких целей. Вот пример выполнения кода:
$ awk 'NR == 1 {print} NR != 1 && $0!~/ID Data1 Data2/' rmLines.txt | head -n 10
ID Data1 Data2
1 100 100
100 200
3 200 100
1 100 100
100 200
3 200 100
1 100 100
100 200
3 200 100
Break down:
NR == 1 {print}
говорит нам о печати первой строки текстового файлаNR != 1 && $0!~/ID Data1 Data2/
логический оператор &&
говорит AWK о печати строки, которая не равна 1 и не содержит ID Data1 Data2
. Обратите внимание на отсутствие части {print}
; в awk, если условие теста оценивается как true, предполагается, что строка будет напечатана. | head -n 10
- это просто небольшое дополнение для ограничения вывода только первыми 10 строками. Не имеет отношения к самой части AWK
, используется только для демонстрации. Если вы хотите получить это в файле, перенаправьте вывод команды, добавив > newFile.txt
в конце команды, например так:
awk 'NR == 1 {print} NR != 1 && $0!~/ID Data1 Data2/' rmLines.txt > newFile.txt
Как это работает? Довольно неплохо:
$ time awk 'NR == 1 {print} NR != 1 && $0!~/ID Data1 Data2/' rmLines.txt > /dev/null
0m3.60s real 0m3.53s user 0m0.06s system
Side note
Сгенерированный пример файла был сделан с помощью цикла от единицы до миллиона и печати первых четырех строк вашего файла (так что 4 строки умножить на миллион равно 4 миллионам строк), что, кстати, заняло 0.09 секунды.
awk 'BEGIN{ for(i=1;i<=1000000;i++) printf("ID Data1 Data2\n1 100 100\n 100 200\n3 200 100\n"); }' > rmLines.txt
Prefix+ w запускает choose-tree -Zw
. Из tmux (1):
choose-tree [-GNswZ ] [-F format ] [-f filter ] [-O sort-order ] [-t target-pane ] [template ]
Put a pane into tree mode, where a session, window or pane may be chosen interactively from a list. -s starts with sessions collapsed and -w with windows collapsed. -Z zooms the pane.
Так что с настройками по умолчанию окна уже свернуты (т.е. вы не можете видеть отдельные панели в исходном виде ).
Если вы хотите, чтобы первоначальный вид был еще больше свернут, вы можете повторно связать его, используя -s
, чтобы каждый сеанс получал только одну строку.
bind-key 'w' choose-tree -Zs
Флаг -Z
появился в tmux 2.7. Если вы используете версию 2.6, привязка была просто choose-tree -w
, поэтому вам следует изменить ее на choose-tree -s
.