Скрипт оболочки, чтобы соответствовать номеру строки из одного файла и поместить его в качестве комментариев в другом файле при совпадении

Параметры в fstab предполагается использовать для его повторного монтирования, применяя указанные параметры (которые НЕ могут включать в себя rw-доступ). Скрипт загрузки, жестко закодированный для перемонтирования корня fs с rw без консультации fstab, нарушен. Таким образом, единственный результат выхода его из fstab состоит в том, что он не будет перемонтирован и останется ro без других примененных вариантов.

-121--64264-

Другой способ использования awk :

Пакет строка

pkg="strace"; dnf groupinfo '*' | awk -F": " '/^Group/ {group=$2} /'"$pkg"'/ {print group}'  

Вывод показывает:

Security Lab
C Development Tools and Libraries

Пакет fvwm

pkg="fvwm"; dnf groupinfo '*' | awk -F": " '/^Group/ {group=$2} /'"$pkg"'/ {print group}'  

Вывод показывает:

Window Managers
-121--64172-

[ является командой; [$ # . Нужно отделить команду от ее аргументов:

if [ $# -eq 0 ]; then
    echo "error"   # Here, too
    exit 1
fi

Между прочим, можно заменить весь этот блок специальным расширением параметров:

: ${1?error}

Если первый позиционный параметр не набора (т.е. нет позиционных параметров), напечатайте сообщение, следующее за? и выйти.

-1
30.07.2018, 14:07
2 ответа
awk 'FNR==NR { for (i=1; i<=NF; ++i) {
                   split($i, a, "=")
                   s[a[1]+1] = $i }; next }
     FNR in s { printf("%-20s//%s\n", s[FNR], $0) }' subscriber.txt simdb.txt

Сначала считываются поля из более короткого subscriber.txtфайла и присваиваются их значения массиву s. Массив sнабирается на число перед =в каждом поле (плюс один ).

При чтении файла simdb.txtвыполняется проверка номера строки в этом файле. Если этот номер строки является ключом в нашем массиве s, создается желаемый вывод. Вывод выполняется с помощью printfи строки форматирования, которая выделяет 20 символов для строки с выравниванием по левому краю -(, данных из simdb.txt), за которыми следует //, и данных, сохраненных из subscriber.txtдля этой конкретной строки..

Вывод с учетом данных в вопросе:

0='917598936722'    //MSISDN
4='ENG'             //Language
6='1234'            //SIM_PIN
0
28.01.2020, 05:12
awk 'NR==FNR
    {Arr[NR-1]=$0;
    next}
    {for(i=1;i<=NF;i++)
    {split($i,a,"="); 
    print $i "    //"Arr[a[1]]}
    }'simdb.txt subscriber.txt
  • прочитать все строки из simdb.txt и сохранить в массиве. Индекс начинается с 0
  • прочитать второй файл и проверить, какое значение стоит перед символом равенства
  • считать значение из Arr и распечатать его.
0
28.01.2020, 05:12

Теги

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