Прочитайте столбец из файла и добавьте конкретный столбец другого файла

У меня есть два файла:

FiLea:

  • Поиск и замена вопроса
  • Показывать сумму файлов в списке каталогов
  • Как awk команда «df -Pm», чтобы получить имена FS, которые имеют более 90% использования FS?
  • Awk, результат печати
  • Почему AWK не любит точки в одной из двух подстановок?
  • GREP / SED или AWK: печать всего абзаца в файле по совпадению с образцом
  • Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW 

    FILEB:

     NE_Name SW ABC 4.4 ASD 4.3 ... ... 

    Обратите внимание, что fileA состоит только из одной строки и имеет несколько заголовков (например, имя, название сайта и т. Д.). Принимая во внимание, что файлB имеет 2 поля с огромным количеством строк.

    Я хочу объединить эти 2 файла как таковые:

    Выходной файл:

     Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW ABC,,,,,,4.4 ASD,,,,,,4.3 

    Таким образом, выходной файл будет иметь все заголовки, присутствующие в файлеA, и будет расширять поля: «Имя» (с значениями «NE_Name», полученными из файла B) и «SW» (со значениями «SW», полученными из файла B).

    Как я могу получить этот выходной файл из 2 входных файлов, упомянутых выше?

  • gensub на нескольких линиях
  • Извлеките первые две части каждой линии, используя awk
  • нужно понимать использование «/» в команде sed
  • Заменить символы в пользовательской части адреса электронной почты
  • UNIX - команда разбивать файл на несколько файлов со всеми строками для каждых 3 уникальных значений в столбце
  • Как использовать awk или sed для преобразования строк в столбцы
  • 3 Solutions collect form web for “Прочитайте столбец из файла и добавьте конкретный столбец другого файла”

    Вот один из способов с awk :

     $ awk -F, 'NR==1{nf=NF-1; print $0; FS=" "} \ NR>2{printf("%s%.*s%s\n",$1,nf,",,,,,,,,,,,,,,,,,",$2)}' fileA fileB Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW ABC,,,,,,4.4 ASD,,,,,,4.3 

    Важнейшей частью является printf где мы печатаем первое и третье поля из файла B, разделенные символом , этот номер берется из первого файла как nf=NF-1 .

     tail -n+2 fileB | sed -r 's/[[:space:]]+/,,,,,,/' | cat fileA - > Output 

    Пояснения

    tail -n +2 fileB записывает конец файла B, начиная со второй строки, так как мы хотим игнорировать первую строку.

    sed , используя -r, --regexp-extended (для значения + метасимвола « по крайней мере один ») заменяет первую группу интервальных символов ожидаемым количеством запятых по вашему примеру.

    cat наконец, объединяет файл A и данные, полученные от sed через канал, называемые - , и записывает его в stdout , который перенаправляется в Output файл по вашему запросу.

    Ограничения

    Не будет работать, если в столбцах NE_Name или SW есть пробелы.

    Другой подход sed :

     $ sed 's/ */,,,,,,,/;/NE_/d' fileA fileB Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW ABC,,,,,,,4.4 ASD,,,,,,,4.3 

    Первая команда sed заменяет 3 или более пробела 7 запятыми, а вторая удаляет любую строку, соответствующую NE_ .

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