0

I have four files in directory namely fileaa.csv fileab.csv fileac.csv filead.csv and I am finding common string present between each of these files and storing the output to out.csv.

I have implemented the below code.

for i in file*; do
    for j in file*; do
        if [ -f "$i" ] && [ -f "$j" ] && [ "$i" != "$j" ]; then
            eval "awk -F'|' 'NR==FNR{a[$i];next} ($i in a) { print $i }' $i $j > out.csv"              
        fi
    done        
done

Its not taking the files and throwing syntax error in such case.

awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileaa.csv];next} (fileaa.csv in a) { print fileaa.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileab.csv];next} (fileab.csv in a) { print fileab.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[fileac.csv];next} (fileac.csv in a) { print fileac.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                                               ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                 ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                                    ^ syntax error
awk: cmd. line:1: NR==FNR{a[filead.csv];next} (filead.csv in a) { print filead.csv }
awk: cmd. line:1:                                               ^ syntax error

I am new bash script, Do anyone any idea how to solve this?

Rajat Kumar
  • 1
  • 1
  • 1
  • 2
    Why are you using `eval`? – Shawn Dec 19 '20 at 09:08
  • 2 nested `for` loops calling awk once per iteration of the inner loop is not how to do this job, a single call to awk is all you need. Post a new question if you'd like help. – Ed Morton Dec 19 '20 at 20:56
  • I have used 2 nested for loops for checking common string in each on the file. Its like having two arrays of numbers and finding out which numbers are common in both – Rajat Kumar Dec 20 '20 at 06:15

0 Answers0