I am trying to make a modular script. I have several scripts/commands which are called from a single script.
I want to prefix the output of each separate command.


My files are allcommands.sh / command1.sh / command2.sh

command1.sh outputs
file exists
file moved

command2.sh outputs
file copied
file emptied

allcommands.sh runs the scripts command1.sh and command2.sh

I want to prefix each output of these two scripts like this:
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied

  • Try running each command piping it through sed "s/\^/command1 /" – j_kubik Jul 23 '13 at 11:08
  • Give me please an example with the information that I give. I don't really understand the sed functionality. I'm sorry. – Ivan Dokov Jul 23 '13 at 11:18

I assume that what you are doing in your allcommands.sh is:


Just relace it with

command1.sh | sed "s/^/[command1] /"
command2.sh | sed "s/^/[command2] /"

A minimal example of allcommands.sh:

for i in command{1,2}.sh; do
    ./"$i" | sed 's/^/['"${i%.sh}"'] /'

With command1.sh and command2.sh executable and in the same directory just echoing the wanted strings, this gives the shell output:

$ ./command1.sh 
file exists
file moved
$ ./command2.sh 
file copied
file emptied
$ ./allcommands.sh 
[command1] file exists
[command1] file moved
[command2] file copied
[command2] file emptied

Quick sed breakdown

sed 's/^/['"${i%.sh}"'] /'
  • s/ enters "regexp pattern match and replace" mode
  • ^/ means "match the beginning of every line"
  • ${i%.sh} happens in the shell context and means "$i, but strip the suffix .sh"
  • ['"${i%.sh}"'] / at first prints a [, then exits the quoted context to grab the $i variable from the shell, then re-enters to finish with the ] and a space.
  • Thanks for the clarifications. Your answer was helpful indeed, but @j_kubik's example was just the one I need. – Ivan Dokov Jul 23 '13 at 11:39

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.