awk输出第一行(awk输出第一行第二列)

http://www.itjxue.com  2023-01-26 18:25  来源:未知  点击次数: 

AWK的使用

AWK

语法: awk -F/f/v/ + ‘pattern’ +文件全路径

或者:标准输出|awk -F/f/v/ + ‘pattern’

参数含义: -F 指定域的分隔符,如默冒号“:”

写法有三个

1.awk -F: ‘pattern’ 文件全路径

2.awk -F “:” ‘pattern’ 文件全路径

3.awk -F’[:,\t]’ ‘pattern’ 文件全路径 #这里用单引号+中括号,表示分隔字符的集合,集合中的每一个符号都会被用作分隔符去分隔当前行

-f 指定从awk文件中执行awk指令

awk是一门语言,它有自己的语法,如果在考虑复用已经awk语句比较复杂的情况下,建议将其写入文件。文件尾建议定为.awk的后缀。

在awk脚本文件的第一行,写入命令解释器的位置,所以这里要写入awk解释器的路劲

终端执行 which awk 命令得到位置

一般为 /usr/bin/awk

于是,文件开头写为 #!/usr/bin/awk -f

然后就在下一行写你的awk语句,保存退出。

这么执行 awk -f script.awk file

-v 自定义变量

awk -v var="name" 'BEGIN{print var}'

感觉没什么用,如果要定义变量,不如直接定义在BEGIN里面

awk -F: ‘BEGIN{var=”name”}{print var}END{print “balabalaba”}’ file

awk 可以使用条件判断、for、do-while等控制语句

语法都和C语言近似,如有需要请看这里

awk 的print 语句支持格式控制,和C类似 ,

语法为: print “balabal %-6s balabala %d\n”,name,age

%s,控制字符串类型输出

%d,控制整形类型输出

%f,控制浮点型

%%,转义为%号

awk存在数组数据类型

数组也和变量一样,初始化语句也同时是声明语句,arr[110]=”aaa”,arr[nihao] = 123,

可以看出来,awk的数组其实并不是正真意义上的数组,更像一个字典

awk内置变量

(一)FS:字段分隔符(field separator) #设置域分隔字符,是用某个字符的替换之前的内容

(二)OFS:输出的字段分隔符(output field separator)#替换FS的内容

(三)RS:记录分隔符(record separator) #设置换行符,使某个字符后面的内容换到下一行

(四)ORS:输出的记录分隔符(output record separator)#将换行符替换成ORS的内容

(五)NF:字段数量(number of field)

这里 (NF-1)可以取到倒数第二个域的值

(六)NR:记录编号(number of record)#行号

(七)FNR:按文件计算“记录编号”(file (1)FNR 表示当前行在不同输入流中处于第几行 #用同一个AWk处理多个文件时,正确显示改行在文件中的行号

(八)FILENAME:文件名

(九)ARGC:参数个数(arguments account)

(十)ARGV:参数列表数组(arguments variable)

如果awk处理得到两行 如何只输出一行例如awk 'if(nf

参考下面的命令,可以在awk命令后通过 | 命令+tail 、head、grep组合来达到你要的效果

---------------------------------------------------

参考下cat、tail、head、tee:文件打印命令

这些命令的语法基本上相同的:命令名 [选项] [文件],而且您可以在管道中使用这些命令。这些命令的功能都是根据特定的条件选择文件内容进行打印。

cat 工具会将文件的全部内容打印到标准输出。

这是最常用的命令之一。例如,您可以使用:

# cat /var/log/mail/info

将邮件程序守护程序日志的内容打印到标准输出[14]。

cat 命令有一个非常有用的选项(-n),该选项将允许您打印行号。

某些文件,如守护程序日志文件(如果相应的守护程序运行了的话)可能非常大[15],在屏幕上打印全部内容可能没什么必要。

您经常只是需要看看一个文件的某几行。

您可以使用 tail 命令完成这一功能。默认情况下,下面的命令将会打印 /var/log/mail/info 文件的最后十行:

# tail /var/log/mail/info

您可以使用 -n 选项显示文件的最后 N 行。例如,要显示最后两行,您应该执行:

# tail -n2 /var/log/mail/info

而 head 命令与 tail 十分相似,只是打印文件的头几行。默认情况下,下面的命令将会打印 /var/log/mail/info 文件的头十行:

# head /var/log/mail/info

和 tail 一样,您也可以使用 -n 选项指定要打印的行数。例如,要打印前两行,您应该执行:

# head -n2 /var/log/mail/info

您还可以组合使用这几条命令。

例如,如果您想要只显示第九行和第十行,您可以先使用 head 命令选择文件的前十行,然后再将结果通过管道送到 tail 命令。

# head /var/log/mail/info | tail -n2

竖线后面的部分将选择最后两行,然后将其打印到屏幕。同样地,您也可以选择只打印文件的倒数第 20 行:

# tail -n20 /var/log/mail/info |head -n1

在本例中,我们让 tail 选择了文件的最后 20 行,然后将结果通过管道传送给 head。然后 head 命令将会从得到的数据中取出第一行打印到屏幕上。

现在我们假定您想要将上例中的结果在屏幕上显示的同时还保存到文件 results.txt。

tee 工具可以帮到我们。其语法是:

tee [选项] [文件]

现在,我们可以将上一命令做如下更改:

# tail -n20 /var/log/mail/info |head -n1|tee results.txt

我们再来举一个例子。我们想要选择最后 20 行,将其保存到 results.txt,但是只在屏幕上显示这 20 行中的第一行。那么,我们应该输入:

# tail -n20 /var/log/mail/info |tee results.txt |head -n1

tee 命令有一个非常有用的选项(-a),它允许您将数据追加到已有文件。

让我们再回过头来看看 tail 命令。像日志这样的文件应该是在不断变化的,因为与其相关的守护程序每时每刻都在记录着它所执行的动作和发生的事件。所以,如果您想要交互地观看日志文件,您可以使用 -f 选项:

# tail -f /var/log/mail/info

在本例中,/var/log/mail/info 文件的所有更改都会立即打印到屏幕上。当您想要知道您系统的工作原理时,使用带 -f 选项的 tail 命令将非常有用。例如,通过查看 /var/log/messages 日志文件,您可以时刻跟踪系统信息和各种守护程序。

在下一节中,我们将会看到如何将 grep 用作过滤器,以便从来自其它服务的信息中拆出 Postfix 信息。

grep: 定位文件中的字符串

不管是命令的名字还是缩写(“General Regular Expression Parser”)都显得非常古怪,但该命令的作用和用法却很简单:grep 将在一个或多个文件中查找给定的模式。其语法为:

grep [选项] 模式 [一个或多个文件]

如果列出了多个文件,将会在每一行结果的开头附加相应的文件名。使用 -h 选项可以不显示这些文件名;使用 -l 选项可以只列出文件名。模式是一个正则表达式,尽管在大多数情况下只是一个简单的单词。下面列出了最常用的几个选项:

-i:进行不区分大小写的搜索;

-v:反转搜索。显示不与模式匹配的行;

-n:显示找到行的行号;

-w:让 grep 在进行模式匹配时匹配整个单词。

awk 按照指定行名顺序提取数据

需要f1:第一列为需要提取的行名,tab分割;

f2:第一列为行名

默认输出第一行

awk中{print $1}什么意思

awk中{print $1}是输出结果的意思,awk是Linux处理文本的工具,用于显示文本。

例如:以空白分割,显示文本的第一段及第二段内容

[root@wei awk]# awk '{print $1,$3}' print.txt

i wei

i zhang

[root@wei awk]# awk '{print "hello",$3}' print.txt

hello wei

hello zhang

扩展资料:

awk的输出:一 print

print的使用格式:print item1,item,...

注意:

1、各项目间使用逗号分隔开,而输出时以空白字符串为分隔

2、输出的item可以为字符串,数值,当前的记录的字段($1),变量或者awk的表达式,数值会先转换字符串,然后输出

3、print命令后面的item可以省略,此时其功能相当于print($0代表未分割的整行文本内容),因此,如果想输出空行,则需要使用print "";

(责任编辑:IT教学网)

更多

推荐ASP教程文章