4

I have a file which contains only one line

$> cat file.txt
apple,orange,cat,dog

I need to append two String to it and assign it to a variable, one in front and another in the end, so that it becomes:

var=key,apple,orange,cat,dog,ending

so that I can use the $var somewhere else...

May I know how could I do that in bash script? Or any linux command can do that? Thanks.

FGH
  • 41
  • 1
  • 1
  • 2

2 Answers2

8

One way would be this:

var="key,$(<file.txt),ending"
garyjohn
  • 34,610
  • 8
  • 97
  • 89
2

One possible solution is:

var=$(echo -n 'key,' && cat file.txt | tr '\n' ',' && echo 'ending')
  • $(...) gets the output string of the commands in ...
  • echo -n prints the following string without a trailing newline
  • cat prints the file's contents and tr '\n' ',' replaces the trailing newline with a comma
  • echo prints the following string with newline (which is not really important)
Tim
  • 2,132
  • 1
  • 22
  • 27
  • It doesn't work... would you please advise if I've done something wrong? As the follow: var=$(echo -n 'KEY,' && cat header-cp-match-src-file.csv | tr '\n' ',' && echo 'ID_BB_COMPANY,BB_CONAME,ID_BB_PARENT_CO,LONG_PARENT_COMP_NAME,COMPANY_CORP_TICKER,AVG_SIM_SCORE') – FGH Oct 25 '13 at 21:21
  • How should I know if you are doing something wrong, if you do not even post the contents of `$var`. I suggest you first try with your sample file and specifications from your question and test, if this gives the desired result. Then try with your original data and strings. – Tim Oct 25 '13 at 21:31