Команда оболочки «Присоединиться» не работает

2

Я объединяю два очень простых отсортированных файла, но по какой-то странной причине это не работает. f1.txt:

f1 abc
f2 mno
f3 pqr

f2.txt:

abc a1
mno a2
pqr a3

Команда:

join -t '\t' f1.txt f2.txt -1 2 -2 1 > f3.txt

К вашему сведению в файлах f1, f2 пробел является вкладкой. Но это производит пустой f3.txt. Почему это происходит? Это такой простой пример присоединения, верно?

Шабхри Нареш
источник

Ответы:

1

Ваш \tне интерпретируется как символ табуляции. Для этого вы можете / должны использовать строку ANSI, чтобы ваша команда стала

join -t $'\t' f1.txt f2.txt -1 2 -2 1 > f3.txt

с $до, '\t'поэтому он будет интерпретироваться как вкладка, как вы хотите.

Удобный ресурс для цитирования вещей, bashпо крайней мере, доступен здесь

Эрик Ренуф
источник
Привет спасибо. это сработало. У меня есть еще один вопрос, если вы знаете. в чем разница между сортировкой -k2 и -k2,2. Я видел несколько примеров, но не очень хорошо понял.
Шабхри Нареш
@ShabhriNaresh, в общем, новые вопросы следует задавать как новый вопрос, но сейчас, если вы это сделаете, -k2он будет выполнять сортировку от поля 2 до конца строки как часть сортировки, -k2,2будет выполнять сортировку на основе только поля 2, и не рассматривать любые другие поля. -k2,3будет использовать только второе и третье поля и т. д. Первое число - это первое поле для рассмотрения, второе - последнее
Эрик Ренуф