<p>Suppose I have a text file with data separated by whitespace into columns. I want to write a shell script which takes as input a filename and a number N and prints out only that column. With awk I can do the following:</p>

<pre><code>awk &lt; /tmp/in '{print $2}' &gt; /tmp/out
</code></pre>

<p>This code prints out the second column. </p>

<p>But how would one wrap that in a shell script so that a arbitrary column could be passed in argv?</p>

```
awk -v x=2 '{print $x}'
```
or in a shell script:
```
#!/bin/sh
num=$1
awk < /tmp/in -v x=$num '{print $x}' > /tmp/out
```