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命令
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}' `