Печатные колонны, использующие awk?

команда locate jdbc мне не помогла. Но я нашел путь, по которому установлен драйвер JDBC. В основном я хотел узнать путь к драйверу JDBC для установки Apache Ranger через Apache Ambari. Apache Ambari отобразит следующее сообщение:

Выполните следующую команду на хосте сервера Ambari. Замените тип базы данных на mysql | oracle | postgres | mssql | sqlanywhere и / jdbc / driver / path в зависимости от местоположения соответствующего драйвера JDBC: настройка сервера ambari - -jdbc-db = {тип-базы данных} --jdbc-driver = {/ jdbc / driver / path}

Драйвер JDBC в моей CentOS - это / usr / share / java / mysql-connector- java.jar, поэтому я выполнил следующую команду с правильным путем к драйверу

установка амбари-сервера --jdbc-db = mysql --jdbc-driver = / usr / share / java / mysql-connector- java.jar

1
14.07.2018, 10:03
4 ответа

Вы можете использовать cutвместо :echo 1:2:3:4:5:6:7:8:9:10|cut -d: -f 2,6-.

2
27.01.2020, 23:32

Это делает то, что вы хотите, если вам нужно использоватьawk:

$ awk 'BEGIN{FS=":"; OFS=":"}{$1=$3=$4=$5="";gsub("^"FS,"",$0);gsub(FS"+",FS,$0)}1' <your file>
  • Приведенное выше работает, разбивая все на поля через BEGIN{FS=":"; OFS=":"}.
  • Затем он очищает поля 1,3,4 и 5, устанавливая для них значение "".
  • Команда 2 gsubнаводит порядок, удаляя все двоеточия (:), которые могут начинаться в начале. = Второй gsubудаляет любые последовательности двоеточий(:)из оставшейся строки в $0.
  • Наконец, мы печатаем результаты через 1.
1
27.01.2020, 23:32
 perl -F: -pale '$"=":"; $_ = "@F[1,5..$#F]"' input-file.txt

 awk -F: '
    {
       a = $2
       for ( i = 6; i <= NF; ++i )
          $(i-5) = $(i)
       NF -= 5
       print a, $0
    }
 ' OFS=":" input-file.txt

 sed -e '
    s/^/:/;s/:/\n/6
    h;s/.*\n//
    x;s/\n.*//
    s/$/:/
    s/^://;s/:/\n/2
    s/^/:/;s/:/\n/2
    s/.*\n\(.*\)\n.*/\1/
    G;s/\n/:/
  '  input-file.txt
0
27.01.2020, 23:32

Вы можете использовать цикл forдля подсчета от начального индекса до последнего индекса и объединить переменную, которая будет напечатана в конце:

TEST_STRG="column1:column2:column3:column4:column5:column6:column7:column8:column9"
echo $TEST_STRG | awk 'BEGIN {FS=":"} {out=$2; for(i = 6; i <= NF; i++) out = out""FS""$i } END {print out}'
  • out=$2:инициализирует переменную вторым столбцом
  • i <= NF:«NF» — это «количество полей» -> количество столбцов, полученных в результате разделения ввода
  • out = out""FS""$i:объединяет столбец с текущим индексом с переменной после разделителя полей «FS»

Это приведет к выводу :column2:column6:column7:column8:column9

0
13.01.2021, 14:56

Теги

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