Arhn - архитектура программирования

Сценарий AWK заменяет запись в файле1 той же записью из файла2

Я пытаюсь проанализировать файл2 для записи 23 и использовать его для замены записи 23 файла1.

Это команда, которую я хотел бы запускать каждый раз.

script.awk file1 file2

Вот пример записи 23 для любого файла. Те же разделители и количество цифр в каждом значении, а также одинаковая строка первого поля.

currentmax: 1.7229 1.6888 1.1069 1.6238 

Тогда это будет первая часть большого awk-скрипта. Я бы добавил в этот скрипт больше, чтобы он работал только с новыми значениями в файле1 и выводил их в файл3, но это на потом.

Я не уверен, что другой порядок файлов в команде облегчил бы написание сценария, а затем манипулирование файлом1 до вывода в файл3. Переключение file1 и file2 может работать.

script.awk file2 file1
31.01.2012

  • Может быть, это только я, но вы можете подробнее об этом? Например, покажите нам некоторый контент для файла 1 и файла 2, и вы получите конечный результат. 31.01.2012

Ответы:


1

Сначала вам нужно указать file2, потому что в нем есть данные, которые вы хотите захватить.

В awk есть пара встроенных переменных, которые вам помогут. FNR — номер записи текущего обрабатываемого файла. NR — это рекордное количество всех просмотренных до сих пор строк.

Чтобы захватить запись 23 из файла 2 и заменить запись 23 файла 1:

awk '
  NR == FNR {
    # this block is processing the first file
    if (FNR == 23) line = $0
    next
  }
  FNR == 23 {$0 = line}
  {print}
' file2 file1 > file3
31.01.2012
  • У меня возник вопрос не по теме. Как поступить с файлом, в котором мы хотим проиндексировать столбец с одинаковыми значениями, но другими значениями других столбцов, например, col1 col2 col3 \n A 33 45 \n B 30 00 \n A 43 99, где col1 — это столбец, который мне нужно проиндексировать, а \n отмечает разные записи. 31.01.2012
  • @Jaypal, я не понимаю - я не вижу здесь вопроса. Вы получите лучшую помощь с фактическим вопросом, а не с комментарием. 31.01.2012

  • 2

    Я бы сделал это отдельной командой. Это должно быть так же просто, как, например,

    { sed -e '23,$d' file1; sed -n -e '23p' file2; sed -e '1,23d' file1; } > newfile
    mv newfile file1
    
    31.01.2012

    3

    Это может сработать для вас:

    l=23; a=c # l=line number a=c to change, a=i to insert or a=a to append
    sed "$l"'s/.*/'"$l$a"' &/p;d' file2 | sed -i -f - file1
    
    31.01.2012
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..