这些AWK命令有什么作用?

时间:2013-10-28 07:27:05

标签: linux awk

我正在尝试为这章作业学习AWK命令,他们作为命令给出的一个例子是:

awk -F: '{printf "%s\t %s\n", $1, $2}' datafile

虽然我理解了大部分这些术语,但我对"%s\t %s\n"所指的内容感到失落。我似乎无法找到他们在这个命令中的目的是什么。任何反馈都会有所帮助,因为我是一名一年级的linux学生,据说请尽量不要过于技术性的回复

3 个答案:

答案 0 :(得分:1)

第一个%s$1的值。

第二个%s$2的值。

\t是一个标签。

\n是换行符。

答案 1 :(得分:0)

awk -F:将字段分隔符设置为:
'{printf "%s\t %s\n", $1, $2}'打印字段nr1标签字段nr2输入
 数据文件

更多细节
"%s #get首次提交($ 1)
\t #tab +空格
%s #get第二次提交($ 2)
\n #add换新线
"
, $1 #fist字段
, $2 #second field

另见:http://www.gnu.org/software/gawk/manual/html_node/Printf-Examples.html

答案 2 :(得分:0)

您检查了man pages吗?

-F是分隔符 - 您说您处理的字段由:分隔,如:

foo:bar:baz
1:2:3

printf是一种打印格式指令,其中

  • %s - 打印字符串
  • \t - 打印标签
  • \n打印新行
  • $1$2 - 打印第一和第二个元素(如foo中的barfoo:bar:bas

printf在这里使用三个参数:第一个是格式(%s…部分,“模具”),接下来的两个参数($1$2)是要以格式显示的变量(将它们塞入模具中)。第一个变量(此处为$1)将替换第一个%s,第二个变量($2)将替换第二个%s