awk 'print $2' 这个命令是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk 'print $2' 这个命令是啥意思?相关的知识,希望对你有一定的参考价值。

linux中shell命令段awk 'print $2'的意思是选取并输出第二列的数据。

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )

linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。

扩展资料:

linux优点:

1、Linux由众多微内核组成,其源代码完全开源;

2、Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、 TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发成出新的协议栈;

3、Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性;

参考资料来源:

百度百科-Awk

百度百科-linux命令

参考技术A

linux中shell命令段awk 'print $2'的意思是选取并输出第二列的数据。

awk是一个文本分析工具,他可以把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理,$2 是指第二个切片。print $2是打印第二个切片的值。

使用方法:awk 'pattern + action' filenames。

例如使用命令 last -n 1输出一行数据:

root     pts/1   192.168.1.100  Tue Feb 10

则 last -n 5 | awk  'print $1' 命令输出的是:

root

扩展资料

调用awk的三种方式介绍

1、命令行方式

awk [-F  field-separator]  'commands'  input-file(s)

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

2、shell脚本方式

将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。

相当于shell脚本首行的:#!/bin/sh

可以换成:#!/bin/awk

3、将所有的awk命令插入一个单独文件,然后调用:

awk -f awk-script-file input-file(s)

其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

参考技术B

一行一行的读取指定的文件, 然后以空格作为分隔符,打印第二个字段。

比如有个文件是testAWK.txt,文件内容如下:

11 22 33 44
55 66 77 88

执行”awk 'print $2' $textAWK.txt:“的结果为:

11

22

介绍

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。

它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

扩展资料

awk常用命令选项

1、-F fs   fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

2、-v var=value   赋值一个用户定义变量,将外部变量传递给awk

3、-f scripfile  从脚本文件中读取awk命令

4、-m[fr] val   对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件;

Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。

参考资料来源:百度百科-linux命令

参考技术C $2:表示第二个字段
print $2 : 打印第二个字段
awk 'print $2' $fileName : 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段
比如有这样一个文件
a1 b1 c1 d1
a2 b2 c2 d2
执行的结果是,输出
b1
b2本回答被提问者采纳
参考技术D zhangsan 25 男

上面的内容被空格分为三个部分,依次为zhangsan 25 男
在awk中就分别对应$1 $2 $3

print $2的话就会输出25

for循环内的awk问题

【中文标题】for循环内的awk问题【英文标题】:awk issue inside for loop 【发布时间】:2022-01-17 17:55:05 【问题描述】:

我有许多以 txt 结尾的不同名称的文件。

rtfgtq56.txt
fgutr567.txt
..

所以我正在运行这个命令

for i in *txt
do
  awk -F "\t" 'print $2' $i | grep "K" | awk 'print' ORS=';' | awk -F "\t" 'OFS="\t"; print $i, $1' > $i%.txt*.k
done

我的问题是我想在第一列中添加每个文件的名称,所以我运行这部分:

awk -F "\t" 'OFS="\t"; print $i, $1' > $i%.txt*

$i 表示 for 循环中的文件, 但它不起作用,因为 awk 无法读取 for 循环中的 $i。 你知道我该如何解决吗?

【问题讨论】:

这能回答你的问题吗? How do I use shell variables in an awk script? 能否请edit 澄清预期的输出应该是什么样子?您想要文件名、选项卡以及第二列中包含K 的行中的所有值,它们之间有分号? 使用awk-v选项,可以基于shell变量创建awk变量。请参阅 awk 手册页。 【参考方案1】:

无论如何,您都想将所有内容重构为单个 Awk 脚本,请注意quote your shell variables.

for i in *.txt
do
    awk -F "\t" '/K/a = a ";" $2
      END  print FILENAME, substr(a, 1) ' "$i" > "$i%.txt*.k"
done

...假设我正确地解开了你的逻辑。 FILENAME Awk 变量包含当前输入文件名。

更一般地说,如果你真的想将一个变量从一个 shell 脚本传递给 Awk,你可以使用

awk -v awkvar="$shellvar" ' .... # your awk script here
    # Use awkwar to refer to the Awk variable'

也许另见useless use of grep

【讨论】:

... 而且您也不需要该变量,因为您不需要循环,您可以在 1 次调用 awk 中完成整个操作。但那将是一个不同的问题。 是的,但是您需要改为从 Awk 写入输出文件,我不想在显然是初学者的问题中解决这个问题。 了解,因此But that'd be a different question,只是认为应该让 OP 意识到这一点。【参考方案2】:

使用awk-v 选项,您可以基于shell 变量创建一个awk 变量。

awk -v i="$i" ....

另一种可能性是将i 设为环境变量,这意味着awk 可以通过预定义的ENVIRON 数组访问它,即ENVIRON["i"]

【讨论】:

以上是关于awk 'print $2' 这个命令是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

awk中变量不好使 awk 'if(\$1 >= $n) print \$2' 变量$n 前面加\$n也不行

解析 pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}' `

linux在执行命令ok,但是写入脚本就错误,怎么解

awk输出指定列

ping命令传递信息

我想利用awk调取特定行数