如何使用 AWK 使用 argv 打印文本文件的第 N 列

发布于 2024-07-09 14:03:33 字数 231 浏览 3 评论 0原文

假设我有一个文本文件,其中的数据由空格分隔成列。 我想编写一个 shell 脚本,它将文件名和数字 N 作为输入并仅打印出该列。 使用 awk,我可以执行以下操作:

awk < /tmp/in '{print $2}' > /tmp/out

此代码打印出第二列。

但是如何将其包装在 shell 脚本中以便可以在 argv 中传递任意列呢?

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:

awk < /tmp/in '{print $2}' > /tmp/out

This code prints out the second column.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烛影斜 2024-07-16 14:03:33
awk -v x=2 '{print $x}'

或者在 shell 脚本中:

#!/bin/sh
num=$1
awk < /tmp/in -v x=$num '{print $x}' > /tmp/out
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
东北女汉子 2024-07-16 14:03:33
awk '{print 

其中 $myvar 是您的变量列(整数)。 小心脚本注入!

$myvar'}' < /tmp/in > /tmp/out

其中 $myvar 是您的变量列(整数)。 小心脚本注入!

awk '{print 

Where $myvar is your variable column (an integer). Watch out for script injections!

$myvar'}' < /tmp/in > /tmp/out

Where $myvar is your variable column (an integer). Watch out for script injections!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文