I have a bash script which reads lines from a text file with 4 columns(no headers). The number of lines can be a maximum of 4 lines or less. The words in each line are separated by SPACE character.
[email protected] [email protected];[email protected] Sub1 MailBody1
[email protected] [email protected];[email protected] Sub2 MailBody2
[email protected] [email protected];[email protected] Sub3 MailBody3
[email protected] [email protected];[email protected] Sub4 MailBody4
Currently, I am parsing the file and after getting each line, I am storing each word in every line into a variable and calling mailx four times. Wondering if is there is an elegant awk/sed solution to the below mentioned logic.
read $line
, store each line in a variablei=( $line1 )
, j=( $line2 )
etc${i[0]}
, ${i[1]}
, ${i[2]}
and ${i[3]}
etcmailx -s ${i[2]} -t ${i[1]} -r ${i[0]} < ${i[3]}
mailx
Do awk or sed provide an elegant solution to the above iterating/looping logic?
Give this a shot:
head -n 4 mail.txt | while read from to subject body; do
mailx -s "$subject" -t "$to" -r "$from" <<< "$body"
done
head -n 4
reads up to four lines from your text file.read
can read multiple variables from one line, so we can use named variables for readability.<<<
is probably what you want for the redirection, rather than <
. Probably.