сопоставлять и печатать несколько столбцов из двух файлов

У меня есть два файла, что мне нужно сделать, это найти общие строки на основе столбца1 в обоих файлах, и если совпадение будет записано в новый файл col1 (общий между двумя файлами) file1col2 и file2col2

file1:

col1 file1col2 10:100000525-100001560(+) 0.971465226620556 10:100001724-100002618(+) 0.940918504451204 10:100002725-100002970(+) 0.946592696189412 10:100003104-100004184(+) 0.736305487299153 10:100004450-100005051(+) 0.70823022283736 10:100005158-100005876(+) 0.969728923411704 10:100006075-100007551(+) 0.855411430976336 10:100007764-100009009(+) 0.274219271261146 10:100009146-100011362(+) 0.927057564779308 10:100011583-100011887(+) 0.883431738847249 

file2

 col1 file2col2 10:100000525-100001560(+) 0.943385996874889 10:100001724-100002618(+) 0.981929023174133 10:100002725-100002970(+) 0.955549170283206 10:100003104-100004184(+) 0.736440826679551 10:100004450-100005051(+) 0.689045711238636 10:100005158-100005876(+) 0.964995337925152 10:100006075-100007551(+) 0.873411848029685 10:100007764-100009009(+) 0.37719743446494 10:100009146-100011362(+) 0.943862343124518 10:100011583-100011887(+) 0.902915705720447 

желаемый выход

 col1(common between two files) file1col2 file2col2 10:100000525-100001560(+) 0.971465227 0.943385997 10:100001724-100002618(+) 0.940918504 0.981929023 10:100002725-100002970(+) 0.946592696 0.95554917 10:100003104-100004184(+) 0.736305487 0.736440827 10:100004450-100005051(+) 0.708230223 0.689045711 10:100005158-100005876(+) 0.969728923 0.964995338 10:100006075-100007551(+) 0.855411431 0.873411848 10:100007764-100009009(+) 0.274219271 0.377197434 10:100009146-100011362(+) 0.927057565 0.943862343 10:100011583-100011887(+) 0.883431739 0.902915706 

  • В то время как цикл чтения с grep
  • имена файлов grep, имена файлов и содержимое сразу?
  • Почему grepping с цветом ничего не возвращает?
  • Как показать только скрытые каталоги, а затем найти скрытые файлы отдельно
  • Команда Mac Terminal - поиск строки и печать с помощью окружения
  • неожиданный вывод с помощью grep
  • Онлайн-тренировки?
  • Греп все сразу
  • One Solution collect form web for “сопоставлять и печатать несколько столбцов из двух файлов”

    join + awk :

     join --header file1 file2 | awk 'NR>1{ $2=sprintf("%1.9f",$2); $3=sprintf("%.9f",$3) }1' > result.txt 

     cat result.txt col1 file1col2 file2col2 10:100000525-100001560(+) 0.971465227 0.943385997 10:100001724-100002618(+) 0.940918504 0.981929023 10:100002725-100002970(+) 0.946592696 0.955549170 10:100003104-100004184(+) 0.736305487 0.736440827 10:100004450-100005051(+) 0.708230223 0.689045711 10:100005158-100005876(+) 0.969728923 0.964995338 10:100006075-100007551(+) 0.855411431 0.873411848 10:100007764-100009009(+) 0.274219271 0.377197434 10:100009146-100011362(+) 0.927057565 0.943862343 10:100011583-100011887(+) 0.883431739 0.902915706 

    Детали :

    • join --header option – обрабатывать первую строку в каждом файле как заголовки полей, печатать их, не пытаясь их соединить

    • NR>1 – начать обработку со второй записи ( NR – номер текущей записи), т.е. – пропустить строку заголовка

    • sprintf("%1.9f",$2) – аргумент формата $2 (второй столбец) как число с плавающей запятой с 9 знаками после запятой

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