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

525
Shabhri Naresh

Я объединяю два очень простых отсортированных файла, но по какой-то странной причине это не работает. 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. Почему это происходит? Это такой простой пример присоединения, верно?

2

1 ответ на вопрос

1
Eric Renouf

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

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

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

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

Привет спасибо. это сработало. У меня есть еще один вопрос, если вы знаете. в чем разница между сортировкой -k2 и -k2,2. Я видел несколько примеров, но не очень хорошо понял. Shabhri Naresh 7 лет назад 0
@ShabhriNaresh в общем, новые вопросы следует задавать как новый вопрос, но сейчас, если вы выполните `-k2`, он выполнит сортировку от поля 2 до конца строки как часть сортировки,` -k2,2` выполнить сортировку, основываясь только на поле 2, и не рассматривать любые другие поля. `-k2,3` будет использовать только второе и третье поля и т. д. Первое число - это первое поле для рассмотрения, второе - последнее Eric Renouf 7 лет назад 0

Похожие вопросы