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


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будет использовать только второе и третье поля и т. д. Первое число - это первое поле для рассмотрения, второе - последнее
Эрик Ренуф
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.