Команда для «заполнения» столбцов в текстовом файле, как функция заполнения Excel

Если результатом команды echo $0 является -bash, это означает, что bash был вызван в качестве оболочки входа в систему. Если на выходе только bash, то вы находитесь в оболочке, не предназначенной для входа в систему.

Поскольку ENV срабатывает, чтобы показать желаемый вывод, он выдает /bin/bash

[root@dcconnect ~]# env | grep -i SHELL
SHELL=/bin/bash

Out put of echo #SHELL извлекается из переменной ENV

2
02.11.2016, 01:01
1 ответ
awk -F'^' -v OFS='^' \
   '{
        for (i = 1; i <= NF; i++) {
                if ($i == "") $i = save[i]
                else          save[i] = $i
        }
        for (i = NF+1; i <= 99; i++) save[i] = ""
        print
    }'

Здесь используется массив с именем save для сохранения значений из одной строки в другую (заполнение вниз). Все в awk неявно инициализируется нулевым значением, поэтому массив save будет пустым, пока ему не будут присвоены данные. (Таким образом, любые пустые поля в первой строке будут оставлены пустыми, , потому что нет предшествующих данных для копирования в них.)

Для каждой строки,

  • Для каждого поля который существует в этой строке ( для (i = 1; i <= NF; i ++) ),
    • , если он пуст, заполните его сохраненным ( скопировано) значение этого столбца,
    • в противном случае сохраните текущее значение для возможного использования в последующих строках.
  • Затем удалите массив save для всех столбцов , которых нет в текущей строке. Например, когда мы переходим к строке 4 (в которой всего четыре поля), мы «забываем», что столбцы 5 и 6 строки 3 содержали «Сингапур» и « Нью-Дели". И когда мы переходим к строке 7 (которая имеет только одно поле), мы «забываем», что столбец 2 строки 5 содержал «Бангкок», поэтому он недоступен вводится в строку 8 (где столбец 2 пуст).

    Замените 99 на максимальное количество полей, которое вы ожидаете увидеть в одной строке (когда-либо).

1
27.01.2020, 22:19

Теги

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