I have two files I would like to join based on the bakery store number.

[File 1] bakedGoods.txt

1:Chocolate Cookies:111
2:Banana Muffins:222
3:Apple Pie:333
4:Strawberry Cheesecake:444
5:Pineapple Turnover:555

Where column 1 is the number of the item, column 2 is the item name, and column 3 is the store number.

[File 2] bakeryStores.txt

111:Cookies Cookies Cookies
222:Bellas Desserts Co.
333:Apples N' Sweets
444:Cheesecake Emporium
777:Estrellas Bakery
888:Suzy's Baked Goods

Where column 1 is the bakery store number and column 2 is the name of the bakery.

My goal is to join the information that has the same bakery store number by using the join command (I assume that is the best way). This means column 3 for file 1 and column 1 for file 2. As well as display a message "Not in store" for the empty fields that are not pair-able. (Which I assume using the option -e"Not in store" is the best way to go. The below is what I am trying to achieve.

111:Chocolate Cookies:Cookies Cookies Cookies
222:Banana Muffins:Bellas Desserts Co.
333:Apple Pie:Apples N' Sweets
444:Strawberry Cheesecake:Cheesecake Emporium
Not in store
Not in store

I try to join the two files by store number, I am also using the -e option (for the message), but nothing changes. I see no output either.

I tried join -1 3 -2 1 -e "Not in store" bakedGoods.txt bakeryStores.txt I understand what I want to do and how to do it, just not sure why it is not displaying anything. Usually, when I join or combine files, without appending, I can see the result right away. I appended but the two files remain the same.

  • 1
    What part have you made of your homework so far and where exactly you need some clarification? – Rui F Ribeiro Oct 22 '18 at 22:15
  • Not homework, just for practice.. I guess it's my fault for using an example involving bakeries.. Anyways! I understand how joining works, but not sure what I am missing. Specifically, I type join -1 3 -2 1 -e "Not in store" bakedGoods.txt bakeryStores.txt -1 3 indicating the common field in file 1 (column 3) -2 1 inciditing the common field in file 2 (column 1) – Belle Oct 22 '18 at 22:27
  • Please show what you have tried. Without this, it is impossible to tell you what you did wrong. – ctrl-alt-delor Oct 22 '18 at 23:04
  • @ctrl-alt-delor Thank you for the edits. I apologize for ambiguity and will be more conscious about detail next time. – Belle Oct 22 '18 at 23:11

Answer these two questions, and you will solve your problem.

What is the default field delimiter (for join)? How do you change it?

| improve this answer | |
  • Is each file sorted on the join field? linux.die.net/man/1/join – K7AAY Oct 22 '18 at 23:28
  • They previously were not sorted when I first created the text files but I did after (before posting on stack exchange) however, after tinkering around, I believe I achieved what I wanted to do. :) I feel like there is a better way though. – Belle Oct 24 '18 at 2:38
  • 1
    @ctrl-alt-delor I was missing exactly that.. the delimeter! To the previous code I mentioned above, I needed a -t':' ! – Belle Oct 24 '18 at 2:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.