title: Columns and Arguments AWK Parameters in Shell Scripting
body: <p>I want to get positional parameters as arguments for my .sh file and I also want to get fields from a text file for awk. I've figured out that I need to use $1-$9 for both and its okay to use the same number $() in awk as a positioning parameter, it still works.</p>
  
  <p>e.g. I call my shell script like this</p>
  
  <pre><code>./myProgram myFile.txt 1 2 3 4
  </code></pre>
  
  <p>Then within my shell script I want to use <code>awk</code> to refer to fields in a text file like this, specifically 1,2:3,4 the last four fields.</p>
  
  <pre><code>0000000022:trevor:736:1,2:3,4
  0000000223:john:73:5,6:7,8
  0000002224:eliza:54:9,8:7,6
  0000022225:paul:22:5,4:3,2
  0000222226:chris:0:1,2:3,4
  </code></pre>
  
  <p>So I can go through the fields, however when I do because there are two types of field separators it doesn't seem to work.</p>
  
  <p>My shell script so far:</p>
  
  <pre><code>#! /usr/bin/env bash
  
  file="$1"
  
  awk -F'[:,]' -v u1=$5 -v v1=$6 -v u2=$7 -v v2=$8 \ '{ print "u1 =", $u1 }' $1
  awk -F'[:,]' -v u1=$5 -v v1=$6 -v u2=$7 -v v2=$8 \ '{ print "v1 =", $v1 }' $1
  awk -F'[:,]' -v u1=$5 -v v1=$6 -v u2=$7 -v v2=$8 \ '{ print "u2 =", $u2 }' $1
  awk -F'[:,]' -v u1=$5 -v v1=$6 -v u2=$7 -v v2=$8 \ '{ print "v2 =", $v2 }' $1
  
  echo "Argument #1 =" $2
  echo "Argument #2 =" $3
  echo "Argument #3 =" $4
  echo "Argument #4 =" $5
  </code></pre>
  
  <p>This is the output I get from terminal:</p>
  
  <pre><code>u1 = 1
  u1 = 5
  u1 = 9
  u1 = 5
  u1 = 1
  v1 = awk: illegal field $(), name "v1"
   input record number 1, file database.txt
   source line number 1
  u2 = awk: illegal field $(), name "u2"
   input record number 1, file database.txt
   source line number 1
  v2 = awk: illegal field $(), name "v2"
   input record number 1, file database.txt
   source line number 1
  Argument #1 = 1
  Argument #2 = 2
  Argument #3 = 3
  Argument #4 = 4
  </code></pre>
  
  <p>I'm so close yet so far, I'm not sure why I'm not able to go further across the fields using my awk script?</p>