Ответ 1
Я думаю, что требуется переменная, сгенерированная на лету
Try
join file1 file12 -t $'\t'
Извините за тривиальный вопрос.
Я немного сражался с командой unix join, пытаясь получить вкладки вместо whitespaces в качестве разделителей по умолчанию. -t - аргумент, но они не работают (ubuntu 9.10 64 бит 2.6.31-14, GNU coreutils версии 7.4)
join file1 file2 -t"\t"
join file1 file2 -t="\t"
join file1 file2 -t="\\t"
join file1 file2 -t $"\t"
Et cetera. Конечно, я всегда могу использовать какое-то неэлегантное решение, например
join file1 file2 > output
sed "s/ /\t/g" output
Но я хотел выглядеть умным:-) Кроме того, если есть аргумент -t, он должен работать.
Я думаю, что требуется переменная, сгенерированная на лету
Try
join file1 file12 -t $'\t'
Вы можете ввести вкладку, нажав CTRL + v Tab
join -t '<CTRL+v><Tab>' file1 file2
man join говорит, что параметры должны появляться перед именами файлов. Вы пробовали
join -t "\t" file1 file2
?
Изменить: Отражая ответ Tonio, правильная строка будет читать
join -t $'\t' file1 file2
join -t "`echo '\t'`" file1 file2
ps: на моей машине Red Hat Enterprise Linux Server версии 5.1 (Tikanga) команда join -t $'\t' file1 file2
возвращает "Недопустимое имя переменной".
Альтернативный трюк, который, кажется, работает, заключается в том, чтобы заключить опцию -t в кавычки с символом буквенного ввода. Это выглядит так:
join '-t ' ...
с переменным пространством между t и заключительной цитатой (так как это вкладка).
Набрано, это:
join<Spc>'-t<Ctrl-v><Tab>' ...
Другой способ:
join -t "` echo -e" \ t "`" file1 file2`
или в более bash -fashion:
join -t "$ (echo -e" \t ")" file1 файл