0

i have two text files file1.txt and file2.txt. Both the files contain same number of rows and columns and i want to divide all rows of file1.txt with file2.txt and my expected output is depicted below.NB: in output file the the string ?-er modes will be replaced by v-er modes.I hope some expert will help me finding my output.Thanks in advance.

file1.txt

layer  1     s-er modes          u = -15.0
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98

layer  2     s-er modes          u =   0.0
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98

layer  3     s-er modes          u =   10.0
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98

file2.txt

layer  1     m-er modes          u = -15.0
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98

layer  2     m-er modes          u =   0.0
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98

layer  3     m-er modes          u =  10.0
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98
2.98   2.98   2.98   2.98   2.98   2.98

output

layer  1     v-er modes          u = -15.0
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00

layer  2     v-er modes          u =   0.0
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00

layer  3     v-er modes          u =   10.0
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
manas
  • 479
  • 2
  • 14

1 Answers1

1

This might be what you're trying to do:

$ cat tst.awk
BEGIN { OFS="   " }
/^layer/ || !NF {
    if (NR != FNR) {
        gsub(/m-er/,"v-er")
        print
    }
    next
}
NR==FNR {
    for (i=1; i<=NF; i++) {
        f[FNR,i] = $i
    }
    next
}
{
    for (i=1; i<=NF; i++) {
        printf "%.02f%s", ($i ? f[FNR,i] / $i : 0), (i<NF ? OFS : ORS)
    }
}

$ awk -f tst.awk file1.txt file2.txt
layer  1     v-er modes          u = -15.0
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00

layer  2     v-er modes          u =   0.0
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00

layer  3     v-er modes          u =  10.0
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
1.00   1.00   1.00   1.00   1.00   1.00
Ed Morton
  • 188,023
  • 17
  • 78
  • 185