返回顶部
首页 > 资讯 > 精选 >Unix中awk命令怎么用
  • 647
分享到

Unix中awk命令怎么用

2023-06-16 04:06:28 647人浏览 独家记忆
摘要

小编给大家分享一下Unix中awk命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!awk 命令不仅提供了简单的输入字符串筛选功能,还包含提取数据列、打印简

小编给大家分享一下Unix中awk命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

awk 命令不仅提供了简单的输入字符串筛选功能,还包含提取数据列、打印简单文本、筛选内容甚至做一些数学计算。

如果你仅使用 awk 选取一行中的特定文本,那么你可能错过了它的很多功能。在这篇文章中,我们会来看看使用 awk 可以帮你做一些其他的什么事情,并提供一些例子。

提取数据列

awk 所提供的最简单与最常用的功能便是从文件或管道传输的数据中选取特定的内容。默认使用空格当做分隔符,这非常简单。

$ echo one two three four five | awk ‘{print $4}’four$ who | awk ‘{print $1}’jdoefhenry

空格指的是一系列的 spacetab 字符。在下面所展示的命令里,awk 从提供的数据中筛选第一和第四项。

awk 命令也可以通过在其后增加文件名参数的方式从文本文件中获取数据。

$ awk '{print $1,$5,$NF}' HelenKellerQuoteThe beautiful heart.

(LCTT 译注:“The best and most beautiful things in the world can not be  seen or even touched , they must be felt with heart.” ——海伦凯勒)

在这个例子中,awk 挑选了一行中的第一个、第五个和最后一个字段。

命令中的 $NF 指定选取每行的最后一个字段。这是因为 NF 代表一行中的字段数量Number of Field,也就是 23,而 $NF 就代表着那个字段的值,也就是heart。最后的句号也包含进去了,因为它是最后一个字符串的一部分。

字段能以任何有用的形式打印。在这个例子中,我们将字段以日期的格式进行打印输出。

$ date | awk '{print $4,$3,$2}'2019 Nov 22

如果你省略了 awk 命令中字段指示符之间的逗号,输出将会挤成一个字符串。

$ date | awk '{print $4 $3 $2}'2019Nov21

如果你将通常使用的逗号替换为连字符,awk 就会尝试将两个字段的值相减——或许这并不是你想要的。它不会将连字符插入到输出结果中。相反地,它对输出做了一些数学计算。

$ date | awk '{print $4-$3-$2}'1997

在这个例子中,它将年 “2019” 和日期 “22” 相减,并忽略了中间的 “Nov”。

如果你想要空格之外的字符作为输出分隔符,你可以通过 OFS输出分隔符output field separator)指定分隔符,就像这样:

$ date | awk '{OFS="-"; print $4,$3,$2}'2019-Nov-22

打印简单文本

你也可以使用 awk 简单地显示一些文本。当然了,比起 awk 你可能更想使用 echo 命令。但换句话说,作为 awk 脚本的一部分,打印某些相关性文本将会非常实用。这里有一个没什么用的例子:

$ awk 'BEGIN {print "Hello, World" }'Hello, World

下面的例子更加合理,添加一行文本标签来更好的辨识数据。

$ who | awk 'BEGIN {print "Current logins:"} {print $1}'Current logins:shsnemo

指定字段分隔符

不是所有的输入都以空格作为分隔符的。如果你的文本通过其它的字符作为分隔符(例如:逗号、冒号、分号),你可以通过 -F 选项(输入分隔符)告诉 awk

$ cat testfilea:b:c,d:e$ awk -F : '{print $2,$3}' testfileb c,d

下面是一个更加有用的例子——从冒号分隔的 /etc/passwd 文件中获取数据:

$ awk -F: '{print $1}' /etc/passwd | head -11rootdaemonbinsyssyncgamesmaNLPmailnewsuucp

筛选内容

你也可以使用 awk 命令评估字段。例如你仅仅想列出 /etc/passwd 中的用户账号,就可以对第三个字段做一些筛选。下面的例子中我们只关注大于等于 1000 的 UID:

$ awk -F":" ' $3 >= 1000 ' /etc/passwdnobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologinshs:x:1000:1000:Sandra Henry-Stocker,,,:/home/shs:/bin/bashnemo:x:1001:1001:Nemo,,,:/home/nemo:/usr/bin/zshdory:x:1002:1002:Dory,,,:/home/dory:/bin/bash...

如果你想为输出增加标题,可以添加 BEGIN 从句:

$ awk -F":" 'BEGIN {print "user accounts:"} $3 >= 1000 ' /etc/passwduser accounts:nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologinshs:x:1000:1000:Sandra Henry-Stocker,,,:/home/shs:/bin/bashnemo:x:1001:1001:Nemo,,,:/home/nemo:/usr/bin/zshdory:x:1002:1002:Dory,,,:/home/dory:/bin/bash

如果你想要不止一行的标题,你可以通过 "\n" 分隔输出:

$ awk -F":" 'BEGIN {print "user accounts\n============="} $3 >= 1000 ' /etc/passwduser accounts=============nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologinshs:x:1000:1000:Sandra Henry-Stocker,,,:/home/shs:/bin/bashnemo:x:1001:1001:Nemo,,,:/home/nemo:/usr/bin/zshdory:x:1002:1002:Dory,,,:/home/dory:/bin/bash

在 awk 中进行数学计算

awk 提供了惊人的数学计算能力,并且可以开平方,算 log,算 tan 等等。

这里有一对例子:

$ awk 'BEGIN {print sqrt(2019)}'44.9333$ awk 'BEGIN {print log(2019)}'7.61036

想要详细了解 awk 的数学计算能力,可以看《使用 awk 进行数学计算》这篇文章。

awk 脚本

你也可以使用 awk 写一套单独的脚本。下面的例子模仿了之前写过的一个,不过还计算了系统里账户的数量。

#!/usr/bin/awk -f # 这一行是注释 BEGIN {    printf "%s\n","User accounts:"    print "=============="    FS=":"    n=0} # 现在开始遍历数据{    if ($3 >= 1000) {        print $1        n ++    }} END {    print "=============="    print n " accounts"}

注意 BEGIN 那一节是如何提供标题、指定字段分隔符和初始化计数器的,它仅在脚本初始化时期执行。这个脚本也包含 END 节,它仅在中间所有命令处理完成之后运行,显示了所有中间小节所筛选数据的最终行数(第三个字段大于等于 1000)。

以上是“Unix中awk命令怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Unix中awk命令怎么用

本文链接: https://lsjlt.com/news/282385.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Unix中awk命令怎么用
    小编给大家分享一下Unix中awk命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!awk 命令不仅提供了简单的输入字符串筛选功能,还包含提取数据列、打印简...
    99+
    2023-06-16
  • linux中awk命令怎么用
    这篇文章给大家分享的是有关linux中awk命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具。awk [options] '...
    99+
    2023-06-09
  • linux中的Awk命令怎么用
    这篇文章主要介绍linux中的Awk命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Awk 是一个强大的工具,可以执行某些可能由其它常见实用程序(包括 sort)来完成的任务。Awk 是个普遍存在的 Unix...
    99+
    2023-06-16
  • awk中next命令怎么使用
    这篇文章主要介绍了awk中next命令怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇awk中next命令怎么使用文章都会有所收获,下面我们一起来看看吧。awk的next相当于循环中continue的作用...
    99+
    2023-06-27
  • 怎么在Linux中使用awk命令
    怎么在Linux中使用awk命令?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。awk简介 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberg...
    99+
    2023-06-13
  • Linux系统中awk命令怎么用
    这篇文章给大家分享的是有关Linux系统中awk命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Awk是Linux命令三剑客之一,在linux中主要对文件格式化输出,在日志和文本中对数据进行格式化处理。a...
    99+
    2023-06-28
  • Linux的awk命令怎么使用
    今天小编给大家分享一下Linux的awk命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。awk是一款文本分析工具a...
    99+
    2023-06-28
  • Linux中文本分析awk命令怎么用
    这篇文章主要介绍Linux中文本分析awk命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具。awk [options]&nbs...
    99+
    2023-06-16
  • Linux中“awk”命令的用法
    Linux中“awk”命令的用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符...
    99+
    2023-06-05
  • Linux的grep,sed,awk命令怎么用
    这篇文章主要介绍了Linux的grep,sed,awk命令怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux的grep,sed,awk命令怎么用文章都会有所收获,下面我们一起来看看吧。在Linux系...
    99+
    2023-06-28
  • Linux系统的awk命令怎么用
    这篇文章主要介绍“Linux系统的awk命令怎么用”,在日常操作中,相信很多人在Linux系统的awk命令怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统的awk命令怎么用”的疑惑有所帮助!...
    99+
    2023-06-28
  • linux中如何使用awk命令
    这篇文章将为大家详细讲解有关linux中如何使用awk命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报...
    99+
    2023-06-09
  • Linux中awk命令的作用是什么
    Linux中awk命令的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一...
    99+
    2023-06-09
  • Unix系统中怎么使用chmod命令
    这篇文章主要介绍了Unix系统中怎么使用chmod命令的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Unix系统中怎么使用chmod命令文章都会有所收获,下面我们一起来看看吧。使用数字改变权限chmod使用数字...
    99+
    2023-07-04
  • linux 中怎么使用awk命令连接字符串
    本篇文章为大家展示了linux 中怎么使用awk命令连接字符串,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、awk字符串转数字 [chengmo@centos5 ~]$ awk 'BEG...
    99+
    2023-06-13
  • awk命令如何使用
    今天小编给大家分享一下awk命令如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Awk模式Awk支持不同类型的模式,包...
    99+
    2023-06-27
  • 如何使用Linux中的awk命令
    这篇文章主要介绍了如何使用Linux中的awk命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据...
    99+
    2023-06-28
  • linux中awk命令的使用方法
    今天就跟大家聊聊有关linux中awk命令的使用方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。awk脚本如下BEGIN {FS=":";OFS=&q...
    99+
    2023-06-09
  • 详解Linux中的awk命令
    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。...
    99+
    2022-06-04
    linux awk 命令 linux awk
  • 怎么使用linux中的awk命令截取字符串
    在Linux中,使用awk命令可以很方便地截取字符串。具体的语法是:```shellawk '{print substr(...
    99+
    2023-09-27
    linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作