сравнение строк с awk vs во время чтения строки

У меня есть два файла, один с 17k строк и еще один с 4k строк. Я хотел сравнить позицию 115 с позицией 125 с каждой строкой во втором файле, и если есть совпадение, напишите всю строку из первого файла в новый файл. Я придумал решение, где я читаю файл, используя 'cat $ filename | при чтении LINE '. но это займет около 8 минут. есть ли другой способ, например, использовать awk для сокращения времени процесса.

мой код

cat $filename | while read LINE do #read 115 to 125 and then remove trailing spaces and leading zeroes vid=`echo "$LINE" | cut -c 115-125 | sed 's,^ *,,; s, *$,,' | sed 's/^[0]*//'` exist=0 #match vid with entire line in id.txt exist=`grep -x "$vid" $file_dir/id.txt | wc -l` if [[ $exist -gt 0 ]]; then echo "$LINE" >> $dest_dir/id.txt fi done 

One Solution collect form web for “сравнение строк с awk vs во время чтения строки”

Следующее должно работать, обновляться, чтобы удалить пробел:

 #!/usr/bin/awk -f # NR is the current line number (doesn't reset between files) # FNR is the line number within the current file # So NR == FNR takes only the first file NR == FNR { # Mark the current line as existing, via an associative array. found[$0]=1 # Skip to the next line, so we don't go through the next block next } { # Take the columns we're looking for cols = substr($0,115,11) # Strip whitespace (space and tab) from the beginning (^) and end ($) gsub(/^[ \t]+/,"", cols) gsub(/[ \t]+$/,"", cols) # Check the associative array to see if this was in the first file # If so, print the full line if(found[cols]) print; } 

Поместите его в файл и вызовите один из следующих

 awk -f script.awk patterns.txt full.txt ./script.awk patterns.txt full.txt 
  • linux & solaris - отдельная сетевая маска IP от обычных IP-адресов
  • sed - как удалить все строки, которые не совпадают
  • Как распечатать (числовые) значения ASCII каждого символа в файле?
  • Печать регулярного выражения Sed в файл .txt
  • Как заменить новую строку на sed?
  • Что делает sed $ 's / \ t] // g'?
  • Использование sed для поиска и замены сложной строки (желательно с регулярным выражением)
  • Как использовать новые строки внутри () с sed?
  • Добавление макроса TeX в начало файла с помощью sed (почему мой метод не работает?)
  • файл шаблона в качестве входа в RS, FS в awk / sed / grep для распознавания и добавления столбцов
  • извлекать линии в соответствии с конкретным столбцом
  • Interesting Posts

    Файл сценария Bash ping для проверки доступности хоста

    localhost: В доступе отказано (публичный ключ, пароль, клавиатура-интерактив)

    Можно ли включить белый список в программу iptables?

    Как найти процессы, вызывающие высокий уровень ввода-вывода на хранилище

    Как скомпилировать определенный исполняемый формат?

    Использование 'find' для рекурсивного поиска и удаления

    grep: обратная косая черта

    find: удалить папку и подпапки, но добавить исключение в два файла

    Считайте удаленные файлы с помощью интерактивного rm (rm -i)

    Как установить Flash-плагин для Firefox в Slackware 14.1?

    iptables для блокировки https-сайтов

    Использовать прокси-сервер socks для команд в терминале

    синтаксическая ошибка при попытке выполнить программу python в оболочке bash

    Как извлечь дату и рассчитать, находится ли она в течение «х» дней с сегодняшнего дня?

    Почему этот двоичный файл передается поверх «ssh -t», который изменяется?

    Linux и Unix - лучшая ОС в мире.