Добавить столбцы в .csv из нескольких файлов

Я не понимаете, как работает fasd, но ваш псевдоним не имеет смысла.

 alias fed = "fasd -e emacsclient -c -a" 
 

Вы передаете emacsclient в качестве аргумента опции -e , затем -c и -a - дополнительные параметры, переданные в fasd . Последний пробел означает, что слово после псевдонима подвергнется расширению псевдонима, например подано foo расширяется до fasd -e emacsclient -c -a fasd -a foo .

Учитывая, что fasd не понимает -c как вариант, я предполагаю, что вы хотели вызвать emacsclient -c -a '' , т.е. для вызова emacsclient с тремя аргументами -c , -a и пустой строкой.

Учитывая способ fasd , интерпретирующий аргумент -e :

  e *) o = "$ {o #?}"; если ["$ o"]; then # после "-e" 
local exec = "$ o" # что-либо после "-e" 
 (…) 
 $ exec "$ res" {{ 1}} 

нет способа передать пустую строку в качестве одного из слов в команде. Вместо этого определите вспомогательную функцию (здесь также подойдет псевдоним).

emacsclient_c () {
  emacsclient -c -a '' "$@"
}
alias fed='fasd -e emacsclient_c'
4
08.05.2019, 20:48
3 ответа

Возможно, вы могли бы попробовать использовать вставку и один дополнительный временный файл

touch temp

while read i; do
        awk '{print $4}' ${i}.txt > ${i}_temp
        paste temp ${i}_temp > test.csv
        cp test.csv temp
done < file_list

rm temp
1
27.01.2020, 20:55

Почему бы просто не использовать paste?

$ cat in1; cat in2
row1,col2,col3
row2,col2,col3
row3,col2,col3
row4,col2,col3
row1
row2
row3
row4
$ paste -d, in1 in2
row1,col2,col3,row1
row2,col2,col3,row2
row3,col2,col3,row3
row4,col2,col3,row4
1
27.01.2020, 20:55

попробуй:

 <file_list xargs -I % awk '
     { system("sed -i '\'' " NR "s/,\\?$/," $4 "/'\'' test.csv" ) }' %.txt

xargsчитает имя файла из файла _list file и передает в awkмысль, что переменная xarags называется %с суффиксом .txt, поскольку имя файла содержит.

с командой sed '#s/$/something/' test.csv", которая использовалась для добавления somethingв конец $определенного номера строки #в файле типа test.csv; поэтому выше $4— это строка, которую необходимо добавить к определенному номеру строки, взятой из NR; ,\?$говорит, что ваша строка может заканчиваться запятой ,, которую я использовал, потому что она есть в вашем test.csv. эта команда sedвызывается функцией awksystem().

обратите внимание , что sedпишет в -любые изменения, поэтому вы не заметите вывод терминала, сделайте:

$ cat test.csv
0,8,4,12
1,10,6,3
2,5,9,10
2
27.01.2020, 20:55

Теги

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