Я не понимаете, как работает 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'
Возможно, вы могли бы попробовать использовать вставку и один дополнительный временный файл
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
Почему бы просто не использовать 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
попробуй:
<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
вызывается функцией awk
system()
.
обратите внимание , что sed
пишет в -любые изменения, поэтому вы не заметите вывод терминала, сделайте:
$ cat test.csv
0,8,4,12
1,10,6,3
2,5,9,10