linux - Apply shell script to strings inside a file and replace string inside quotes -


suppose have file greeting.txt(double quotes inside file, 1 line):

"hello world!" 

and file names.txt(no double quotes, many lines, show 2 here example):

tom mary 

then want create bash script create files greeting_to_tom.txt:

"hello tom!" 

and greeting_to_mary.txt:

"hello mary!" 

i'm quite newbie in shell script, after piece searched, tried:

greetingtoall.sh:

#!/bin/bash filename="greeting_to_"$1".txt" cp greeting.txt $filename sed -i 's/world/$1/' $filename 

and @ command line type:

cat names.txt | xargs ./greetingtoall.sh 

but tom recognized , it's wrongly replaced $1. can me task?

if create greetingtoall below:

greeting=$(cat greeting.txt) while read -r name;    echo "$greeting" | sed "s/world/$name/" > "greeting_to_$name.txt" done < "$1" 

you can call as:

./greetingtoall names.txt 

depending on you're doing, might better idea parameterise script take greeting file choose:

greeting=$(cat "$1") while read -r name;    echo "$greeting" | sed "s/world/$name/" > "greeting_to_$name.txt" done < "$2" 

then can call as:

./greetingtoall greeting.txt names.txt 

Comments

Popular posts from this blog

javascript - Using jquery append to add option values into a select element not working -

Android soft keyboard reverts to default keyboard on orientation change -

Rendering JButton to get the JCheckBox behavior in a JTable by using images does not update my table -