Как объединить два CSV-файла с одинаковым количеством строк

PROMPT_COMMAND+="hey.sh;"

PROMPT_COMMAND Если установлено, значение выполняется как команда перед выдачей каждого основного запроса .


Примечание: переменные среды и переменные оболочки

По умолчанию PROMPT_COMMAND является , а не переменной среды . Это просто переменная оболочки .

Оба типа переменных доступны одинаково ( «$ переменная *» ), но переменные среды наследуются дочерними процессами, тогда как переменные оболочки не используются т.

По соглашению используются заглавные буквы переменные среды + переменные оболочки, которые настраивают вашу оболочку (PROMPT_COMMAND настраивает вашу оболочку), но сохраняют другие типы переменных в нижнем регистре.

В bash вы можете: объявить -p , чтобы узнать, экспортируется ли переменная (= является переменной среды) или нет:

$ declare -p PATH
declare -x PATH=... #-x means it's exported
$ declare PROMPT_COMMAND
declare -- PROMPT_COMMAND=... #no -x so just a shell variable
5
25.11.2018, 17:06
1 ответ

Задание для paste:

paste -d, {1,2}.txt

-d, устанавливает разделитель как ,. {1,2}.txt - это расширение скобок, выполненное shell, будет расширено до 1.txt 2.txt.


Если вы любите немного awk:

awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
  • NR==FNR будет истинным только для первого файла; {a[FNR]=$0; next} создает массив a с номерами записей в качестве ключей и записями в качестве значений

  • Для второго файла {print a[FNR], $0} печатает элемент массива на соответствующем номере строки, за которым следует текущая запись; OFS=, устанавливает разделитель полей вывода как ,

Пример:

$ cat 1.txt 
1,2,3
4,5,6
7,8,9

$ cat 2.txt 
10,11,12
13,14,15
16,17,18

$ paste -d, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

$ awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18
12
27.01.2020, 20:34

Теги

Похожие вопросы