AWK для фильтрации вывода - PullRequest
       0

AWK для фильтрации вывода

0 голосов
/ 11 февраля 2020

Я путаюсь с этим, у меня следующая структура каталогов

ls -d */*
keyspace1/table2           system/peers                  system/sstable_activity                     system_schema/columns
system/IndexInfo           system/prepared_statements    system/transferred_ranges                   system_schema/dropped_columns
system/available_ranges    system/range_xfers            system/views_builds_in_progress             system_schema/functions
system/batches             system/schema_aggregates      system_auth/resource_role_permissons_index  system_schema/indexes
system/batchlog            system/schema_columnfamilies  system_auth/role_members                    system_schema/keyspaces
system/built_views         system/schema_columns         system_auth/role_permissions                system_schema/tables
system/compaction_history  system/schema_functions       system_auth/roles                           system_schema/triggers
system/hints               system/schema_keyspaces       system_distributed/parent_repair_history    system_schema/types
system/local               system/schema_triggers        system_distributed/repair_history           system_schema/views
system/paxos               system/schema_usertypes       system_distributed/view_build_status        system_traces/events
system/peer_events         system/size_estimates         system_schema/aggregates                    system_traces/sessions

, и я хочу исключить все системные папки, но system_schema и другие каталоги должны остаться! я пытался сделать это с помощью AWK, но это не работает так, как я хочу

ls -d */* | awk '{for(i=1;i<=NF;i++) { if(($i=="system_schema") || ($i!~"system")) {print $i}}}'
keyspace1/table2

это печатает другие каталоги, что нормально, но когда моя папка system_schema? или как я могу сделать это, используя другие UNIX инструменты? спасибо

1 Ответ

0 голосов
/ 11 февраля 2020

С примером grep вы можете сделать это следующим образом:

ls -d */* | grep -v "^system/" 

или, если вы хотите, чтобы все записи начинались с system, но не system/, вы можете использовать что-то вроде:

ls -d */* | grep "^system"|grep -v "^system/"

Если вам нужны только system_schema и keyspace1, вы можете использовать этот код:

 ls -d */* | egrep "system_schema|keyspace" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...