Сценарий Bash зацикливается две функции

Используя ответ на исходный вопрос, это можно исправить с помощью minicom, запустив:

sudo minicom -s

И установив устройство, которое будет использоваться, сохранив настройки в dfl.

Большое спасибо! Надеюсь, это будет полезно для всех, кто пытается устранить эту проблему.

-1
26.11.2018, 23:45
2 ответа

В соответствии с комментариями вы хотите перечислить 4-й столбец в порядке, продиктованном 5-м столбцом (в обратном числовом порядке ).

$ sed '1d' <TABLE_LIST | sort -k5,5nr | awk '{ print $4 }'
/opt/oracle/oradata/ORCLCDB/encryption.dbf
/opt/oracle/oradata/ORCLCDB/retention.dbf
/opt/oracle/oradata/ORCLCDB/users01.dbf
/opt/oracle/oradata/ORCLCDB/oracle.dbf

Команда sedудаляет заголовок из файла, а команда sortсортирует оставшиеся строки в 5-м столбце в порядке убывания номеров. Окончательный awkизвлекает 4-й столбец.

Это будет работать, если ни один из столбцов не содержит пробельных символов внутри самого столбца.


Если вы хотите вставить эти строки selectи from dual;, тогда вы можете изменить часть awkконвейера:

$ sed '1d' <TABLE_LIST | sort -k5,5nr | awk '{ printf("select %s from dual;\n", $4) }'
select /opt/oracle/oradata/ORCLCDB/encryption.dbf from dual;
select /opt/oracle/oradata/ORCLCDB/retention.dbf from dual;
select /opt/oracle/oradata/ORCLCDB/users01.dbf from dual;
select /opt/oracle/oradata/ORCLCDB/oracle.dbf from dual;
1
28.01.2020, 05:09

Использование GNU Awk > 4.0

gawk '
  FNR>1 {a[$5] = $4} 
  END {
    PROCINFO["sorted_in"] = "@ind_num_desc"; 
    for (i in a) print "select " a[i] " from dual;"
  }
' TABLE_LIST 
select /opt/oracle/oradata/ORCLCDB/encryption.dbf from dual;
select /opt/oracle/oradata/ORCLCDB/retention.dbf from dual;
select /opt/oracle/oradata/ORCLCDB/users01.dbf from dual;
select /opt/oracle/oradata/ORCLCDB/oracle.dbf from dual;
0
28.01.2020, 05:09

Теги

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