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

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

FiLea:

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 входных файлов, упомянутых выше?

  • Как написать sed однострочный, чтобы добавить символ после каждого третьего символа?
  • Как сокращать / путь / в / файл в / p / t / файл
  • Разделение строки до определенного места
  • Может ли sed сохранить свой вывод в файл?
  • sed шаблон, за которым следует один одиночный символ один или несколько раз
  • Извлечение жетонов из строки текста
  • sed для удаления ведущего 91, если число равно 12 цифрам
  • Удалить символ авторского права
  • 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 - лучшая ОС в мире.