Подтвердить что ты не робот

Разделитель unix join char

Извините за тривиальный вопрос.

Я немного сражался с командой 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, он должен работать.

4b9b3361

Ответ 1

Я думаю, что требуется переменная, сгенерированная на лету

Try

join file1 file12 -t $'\t'

Ответ 2

Вы можете ввести вкладку, нажав CTRL + v Tab

join -t '<CTRL+v><Tab>' file1 file2

Ответ 3

man join говорит, что параметры должны появляться перед именами файлов. Вы пробовали

join -t "\t" file1 file2

?

Изменить: Отражая ответ Tonio, правильная строка будет читать

join -t $'\t' file1 file2

Ответ 4

join -t "`echo '\t'`" file1 file2

ps: на моей машине Red Hat Enterprise Linux Server версии 5.1 (Tikanga) команда join -t $'\t' file1 file2 возвращает "Недопустимое имя переменной".

Ответ 5

Альтернативный трюк, который, кажется, работает, заключается в том, чтобы заключить опцию -t в кавычки с символом буквенного ввода. Это выглядит так:

join '-t    ' ...

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

Набрано, это:

join<Spc>'-t<Ctrl-v><Tab>' ...

Ответ 6

Другой способ:

join -t "` echo -e" \ t "`" file1 file2`

или в более bash -fashion:

join -t "$ (echo -e" \t ")" file1 файл