Read a file and assign the values to a variable

i have a file in this format

curyymm PRVYYMM CDDMmmYY bddMmmyy eddMmmyy
--------- ------- ------------ ---------- -----------
0906 0905 09Jun09 01Jun09 30Jun09
----------- --------- ------------ ------------ -----------

i need to read the third line and write a new file like this

curyymm = 0906
PRVYYMM = 0905
CDDMmmYY = 09Jun09
bddMmmyy = 01Jun09
eddMmmyy = 30Jun09

sed -n 3p file1 |  read curyymm PRVYYMM CDDMmmYY bddMmmyy eddMmmyy  

echo "curyymm = $curyymm
PRVYYMM = $PRVYYMM
CDDMmmYY = $CDDMmmYY
bddMmmyy = $bddMmmyy
eddMmmyy = $eddMmmyy" > file2

Or with awk:

awk '
NR==1{split($0,a);next}
NR==3{for(i=1;i<=NF;i++){print a " = " $i};exit}
' file > newfile

Regards

wow.. that was very quick.. thank you guys.. it was very helpfull.. i din think this would be this simple.. you guys made my life easy :slight_smile:

nawk 'NR==1{
	n=split($0,keys," ")
	next
}
NR==3 {
	split($0,vals," ")
	for(i=1;i<=n;i++)
		printf("%s=%s\n",keys,vals)
	exit
}' a.txt

That will fail in every shell except ksh. It will fail in pdksh, bash, dash, etc..

There's no need for an external command if you want the third line; if it's the 50th (give or take a dozen or two) or higher, use sed.

{ read;read;
read curyymm PRVYYMM CDDMmmYY bddMmmyy eddMmmyy  
} < file1
echo "curyymm = $curyymm
PRVYYMM = $PRVYYMM
CDDMmmYY = $CDDMmmYY
bddMmmyy = $bddMmmyy
eddMmmyy = $eddMmmyy" > file2