【Shell牛客刷题系列】SHELL15 去掉不需要的单词:总结awk命令中的内置函数

2023-10-30



该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令。

刷题链接:牛客题霸-Shell篇

该系列文章都放到专栏下,专栏链接为:《专栏:Linux》。欢迎关注专栏~

本文知识预告:

  • 本文首先总结了awk命令中的各个内置函数的用法;
  • 然后给出了五种题目的解决方法,需要使用到之前学习到的正则表达式。


题目:SHELL15 去掉不需要的单词

写一个bash脚本以实现一个需求,去掉输入中含有B和b的单词。假设输入如下:

big
nowcoder
Betty
basic

你的脚本获取以上输入应当输出:

nowcoder test

说明:你可以不用在意输出的格式,空格和换行都行

相关命令学习

awk:文本和数据进行处理的编程语言

awk命令来自于三位创始人”Alfred Aho,Peter Weinberger, Brian Kernighan “的姓氏缩写,其功能是用于对文本和数据进行处理的编程语言。使用awk命令可以让用户自定义函数或正则表达式对文本内容进行高效管理,与sedgrep并称为Linux系统中的文本三剑客。

语法格式awk 参数 文件

常用参数

参数 功能
-F 指定输入时用到的字段分隔符
-v 自定义变量
-f 从脚本中读取awk命令
-m val值设置内在限制

常用的awk内置变量

awk语法由一系列条件和动作组成,在花括号内可以有多个动作,多个动作之间用分号分隔,在多个条件和动作之间可以有若干空格,也可以没有。

变量名称 说明
FILENAME 当前输入文档的文件名
FNR 当前输入文档的当前行号,尤其当多个输入文档时有用
FS 设置字段分隔符,默认为空格或制表符
NF 当前记录(行)的字段(列)个数
NR 输入数据流的当前记录数(行号)
OFS 输出字段分隔符,默认为空格
ORS 输出记录分隔符,默认为换行符
RS 输入记录分隔符,默认为换行符

awk是一种处理文本文件的编程语言,文件的每行数据都被称为记录默认以空格或制表符为分隔符每条记录被分成若干字段(列)awk每次从文件中读取一条记录

例子:

  1. 仅显示指定文件中第1、2列的内容(默认以空格为间隔符):
lucky@DESKTOP-VQ8KID4:~/shell$ awk '{print $1,$2}' nowcoder.txt
#include <iostream>
using namespace
int main()
{
int a
int b
cout <<
return 0;
}
  1. 以冒号为间隔符,仅显示指定文件中第1列的内容:
lucky@DESKTOP-VQ8KID4:~/shell$ awk -F : '{print $1,$2}' /etc/passwd
root x
daemon x
bin x
...
tcpdump x
sshd x
landscape x
pollinate x
lucky x

/etc/passwd文件中的内容由:分隔开。

  1. 以冒号为间隔符,显示系统中所有UID号码大于500的用户信息(第3列):
lucky@DESKTOP-VQ8KID4:~/shell$ awk -F : '$3>=500' /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
lucky:x:1000:1000:,,,:/home/lucky:/bin/bash
  1. 仅显示指定文件中含有指定关键词main的内容:
lucky@DESKTOP-VQ8KID4:~/shell$ awk '/main/{print}' nowcoder.txt
int main()
  1. 以冒号为间隔符,仅显示指定文件中最后一个字段的内容:
lucky@DESKTOP-VQ8KID4:~/shell$ awk -F : '{print $NF}' /etc/passwd
/bin/bash
/usr/sbin/nologin
/usr/sbin/nologin
...
/usr/sbin/nologin
/bin/false
/bin/bash
  1. 输出行号,NR将所有文件的数据视为一个数据流,而FNR则是将多个文件的数据视为独立的若干个数据流,遇到新文件时行号从1开始重新递增。
lucky@DESKTOP-VQ8KID4:~$ awk '{print NR}' first.txt three.sh
1
2
3
lucky@DESKTOP-VQ8KID4:~$ awk '{print FNR}' first.txt three.sh
1
1
2

grep:强大的文本搜索工具

grep来自于英文词组“global search regular expression and print out the line”的缩写,意思是用于全面搜索的正则表达式,并将结果输出。人们通常会将grep命令与正则表达式搭配使用,参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵活。
与之容易混淆的是egrep命令和fgrep命令。如果把grep命令当作是标准搜索命令,那么egrep则是扩展搜索命令,等价于“grep -E”命令,支持扩展的正则表达式。而fgrep则是快速搜索命令,等价于“grep -F”命令,不支持正则表达式,直接按照字符串内容进行匹配。

语法格式: grep [参数] 文件

常用参数:

参数 功能
-i 忽略大小写
-c 只输出匹配行的数量
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,显示行号
-h 查询多文件时不显示文件名
-s 不显示不存在、没有匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-x 匹配整行
-r 递归搜索
-q 禁止输出任何结果,已退出状态表示搜索是否成功
-b 打印匹配行距文件头部的偏移量,以字节为单位
-o -b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
-F 匹配固定字符串的内容
-E 支持扩展的正则表达式
  1. 搜索某个文件中,包含某个关键词的内容:
lucky@DESKTOP-VQ8KID4:~/shell$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
  1. 搜索某个文件中,以某个关键词开头的内容:
lucky@DESKTOP-VQ8KID4:~/shell$ grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
  1. 搜索多个文件中,包含某个关键词的内容:
root@DESKTOP-VQ8KID4:~# grep lucky /etc/passwd /etc/shadow
/etc/passwd:lucky:x:1000:1000:,,,:/home/lucky:/bin/bash
/etc/shadow:lucky:$6$SBxuPYFLSnBcfbHN$OkFFnnJCpf2P4OLOnnaWXMq.xbmgL3H5aRy4nkEkk/.8VHABaKDS6MdYm3UR3TpHZplAl5HVyffI8nbLlAAoh1:19256:0:99999:7:::
  1. 搜索多个文件中,包含某个关键词的内容,不显示文件名称:
root@DESKTOP-VQ8KID4:~# grep -h lucky /etc/passwd /etc/shadow
lucky:x:1000:1000:,,,:/home/lucky:/bin/bash
lucky:$6$SBxuPYFLSnBcfbHN$OkFFnnJCpf2P4OLOnnaWXMq.xbmgL3H5aRy4nkEkk/.8VHABaKDS6MdYm3UR3TpHZplAl5HVyffI8nbLlAAoh1:19256:0:99999:7:::
  1. 输出在某个文件中,包含某个关键词行的数量:
root@DESKTOP-VQ8KID4:~# grep -c root /etc/passwd /etc/shadow
/etc/passwd:1
/etc/shadow:1
  1. 搜索某个文件中,包含某个关键词位置的行号及内容:
lucky@DESKTOP-VQ8KID4:~/shell$ grep -n int nowcoder.txt
3:int main()
5:    int a = 10;
6:    int b = 100;
  1. 搜索某个文件中,不包含某个关键词的内容:
lucky@DESKTOP-VQ8KID4:~/shell$ grep -v int nowcoder.txt
#include <iostream>
using namespace std;
{
    cout << "a + b:" << a + b << endl;
    return 0;
}
  1. 搜索当前工作目录中,包含某个关键词内容的文件,未找到则提示:
root@DESKTOP-VQ8KID4:/# grep -l root *
grep: bin: Is a directory
grep: boot: Is a directory
grep: dev: Is a directory
grep: etc: Is a directory
grep: home: Is a directory
init
grep: lib: Is a directory
grep: lib32: Is a directory
...
grep: tmp: Is a directory
grep: usr: Is a directory
grep: var: Is a directory
  1. 搜索当前工作目录中,包含某个关键词内容的文件,未找到不提示:
lucky@DESKTOP-VQ8KID4:~/shell$ grep -sl main *
nowcoder.txt
  1. 递归搜索,不仅搜索指定目录,还搜索其内子目录内是否有关键词文件:
root@DESKTOP-VQ8KID4:/# grep -srl root /etc
/etc/services
/etc/ltrace.conf
/etc/systemd/logind.conf
/etc/crontab
/etc/newt/palette.ubuntu
/etc/xattr.conf
/etc/apparmor.d/tunables/home
...
  1. 搜索某个文件中,精准匹配到某个关键词的内容(搜索词应与整行内容完全一样才会显示,有别于一般搜索):
lucky@DESKTOP-VQ8KID4:~/shell$ grep -x "return 0;" nowcoder.txt
lucky@DESKTOP-VQ8KID4:~/shell$ grep -x "    return 0;" nowcoder.txt
    return 0;
  1. 判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用:
lucky@DESKTOP-VQ8KID4:~/shell$ grep -q return nowcoder.txt
lucky@DESKTOP-VQ8KID4:~/shell$ echo $?  # 包含
0

lucky@DESKTOP-VQ8KID4:~/shell$ grep -q returns nowcoder.txt
lucky@DESKTOP-VQ8KID4:~/shell$ echo $?  # 不包含
1
  1. 搜索某个文件中,空行的数量:
lucky@DESKTOP-VQ8KID4:~/shell$ grep -c ^$ nowcoder.txt
0

awk命令中的内置函数

字符串函数

  1. subgsub函数:sub函数在记录中查找能够匹配正则表达式的最长且最靠左的字串,然后用替换子串替换找到的子串。默认是整个记录,可指定目标字符串。
sub(regualr expression,substitution string);
sub(regualr expression,substitution string,target string);

例子:

lucky@DESKTOP-VQ8KID4:~$ awk '{sub(/now/,"nowcoder"); print}' nowcoder.txt
big
nowcodercoder
Betty
basic
nowcoder

gsub类似于sub的用法,但是sub只对目标串中出现的第一个匹配进行替换。gsub则对字符串中的正则表达式进行全局替换,即替换出现在目标串的每一次匹配成功的子串。

lucky@DESKTOP-VQ8KID4:~$ awk '{gsub(/now/,"nowcoder"); print}' nowcoder.txt
big
nowcodercoder
Betty
basic
nowcoder
  1. index函数:index函数返回子串在字符串中的第一次出现的位置。下标从1开始算起。语法格式为:
index(string, substring)

例子:

lucky@DESKTOP-VQ8KID4:~$ awk 'BEGIN{print index("hellow", "lo")}'
4
  1. length函数:这个函数很常用,返回字符串的字符个数,支持中文字符。语法格式为:
length(string)

例子:

lucky@DESKTOP-VQ8KID4:~$ awk 'BEGIN{print length("helloworld")}'
10
  1. substr函数:该函数返回从字符串指定位置开始的一个子串(从1开始算起)。如果指定了子串的长度,则返回字符串相应的部分。如果指定长度超出极限,则返回实际内容。语法格式为:
sbustr(string, starting position, length for substring);

例子:

lucky@DESKTOP-VQ8KID4:~$ awk 'BEGIN{print substr("Santa Claus",7,6)}'
Claus
  1. match函数:该函数用于返回正则表达式在字符串中出现的位置,如果没有出现,则返回0。其内置变量RSTART保存开始位置,RLEGNTH保存匹配到的长度。语法格式:
match(string,regular expression)

例子:

awk 'BEGIN{start=match("good morning everyone",/n... e/); print start,RSTART,RLENGH}'
  1. split函数:该函数使用有用户自定义的分割符来分割一个字符串,保存到一个数组中。如果没有提供分割符,则使用FS作为分割符。语法格式为:
split(string, array, fieldseparator);
split(string, array);

例子:

lucky@DESKTOP-VQ8KID4:~$ awk 'BEGIN{split("2013/06/16",date,"/"); print date[2],date[3]}'
06 16
  1. printf函数:同C语言的printf用法。

常用算术函数

  1. int(x)x的整数部分,直接去掉小数部分,不四舍五入。
  2. cos(x)x的余弦值,x是弧度
  3. sin(x)x的正弦值,x是弧度
  4. exp(x)xe的指数函数
  5. log(x)x的自然对数,底数为e
  6. sqrt(x)x的平方根
  7. rand( ):返回一个0到1之间的随机数
  8. srand(x):设定rand的种子,常与rand()一起使用,以产生不同的随机数。例子:
lucky@DESKTOP-VQ8KID4:~$ awk 'BEGIN{srand(); print rand()}'
0.136167
lucky@DESKTOP-VQ8KID4:~$ awk 'BEGIN{srand(); print rand()}'
0.548888

用户自定与函数

脚本中凡是可以出现模式操作规则的位置都可以放置用户自定义函数。

function function_name(parameter1,parameter2....){
	statements
	return expression
}

注意事项:

  1. 变量的传递是传值调用,而且变量只在该函数中局部有效。数组则是地址引用。
  2. 函数中出现的任何变量,如果不是作为参数列表传进来的,都是全局变量。
  3. 调用函数时1如果没有指定某个形参的值,则设定为空。

题目解决方案

方法一:sed命令

sed '/[Bb]/d' nowcoder.txt

或者

sed '/B\|b/d' nowcoder.txt

方法二:grep命令

grep -v [Bb] nowcoder.txt

方法三:awk正则

awk '!/[Bb]/{print $0}' nowcoder.txt

方法四:awk命令配合match函数

awk '!match($0, /[Bb]/){print $0}' nowcoder.txt

方法五:循环

while read line; do
	if [[ $line =~ [bB] ]]; then
		continue
	else
		echo $line
	fi
done < nowcoder.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Shell牛客刷题系列】SHELL15 去掉不需要的单词:总结awk命令中的内置函数 的相关文章

  • 如何在 Makefile 中定义全局 shell 函数?

    我想定义一个shell函数 bin sh test do some complicated tests 1 2 if something then build thisway 1 2 else build otherway 1 2 fi 这
  • 如何在 sed 中用“pwd”的结果替换令牌?

    我正在尝试做这样的事情 sed s REPLACE WITH PATH pwd 不幸的是 我出错了 sed e expression 1 char 23 unknown option to s 为什么会发生这种情况 您需要使用不同的字符而不
  • 使用带有通配符的 jquery grep 搜索对象数组

    我正在使用 jquery grep 搜索对象数组 并希望在搜索中包含通配符 例如 我有一个数组如下 courses code ENCH3TH otherFields otherStuff code ENCH3THHS1 otherField
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • sed + 删除以 ### 开头的行,包括行开头和 ### 之间的空格

    I have sed i d file 如何更改 sed 语法以便像 awk 语法一样做出反应 awk t file 例如 sed 需要删除以空格或 TAB 开头的行 然后 sed i t d file
  • 不要将变量内容视为 sed 中的特殊字符

    我有以下内容sed命令 sed i 4i CHANGES CHANGELOG rst 然而 我的 CHANGES变量看起来像这样 title list elem elem 因此 上述命令失败并出现以下错误 sed e expression
  • sed - 删除行尾的句点

    我正在尝试删除文本文件中行尾的句点 有些行末尾有句点 有些则没有 cat textfile sometexthere 123 22 no period moretext with period lt remove this period n
  • 将变量插入 sh 脚本命令[重复]

    这个问题在这里已经有答案了 bin sh f set proj dir OutputDir for projname in lib proj1 proj2 do mv scripts projname BYTECODE proj dir s
  • Bash 的源命令无法处理从互联网上卷曲的文件

    我正在尝试使用curl从互联网获取脚本文件 如下所示 source lt curl url echo done 我看到的是 完成 得到了回响before卷曲甚至开始下载文件 这是实际的命令和输出 bash 3 2 source lt cur
  • 使用 sed 将反斜杠替换为斜杠[重复]

    这个问题在这里已经有答案了 我需要更换 with 我有一个文件 其中包含 test test2 test3 test4 I tried VRS Ruta cat ruta lst sed s g sed s g output test te
  • 如何使用 nohup 获取正在运行的程序列表

    我正在通过 SSH 连接访问运行 CentOS linux 发行版 的服务器 由于我无法始终保持登录状态 因此我使用 nohup command 来运行我的程序 我找不到如何获取我开始使用 nohup 的所有程序的列表 工作 只有在我注销之
  • 批量检测系统是32位还是64位

    有谁知道如何创建一个批处理文件 如果是 64 位系统 可以对一个程序进行 shell 处理 如果是 32 位系统 则可以对另一个程序进行 shell 处理 检查 PROCESSOR ARCHITECTURE being x86 if PRO
  • 在 shell/shell 脚本中设置 MongoDB 写关注

    我正在尝试填充一个集合MongoDB的壳 据我了解 使用轻松的Write Concern可以大大加快这个过程 我说的是文档 http docs mongodb org manual core write concern write oper
  • 是否可以从应用程序执行 ADB shell 命令?

    我有一个安卓电脑 http www timingpower com rk3288 with root 开箱即用 连接到始终以横向显示的外部显示器 HDMI 和 USB 即使我的应用程序在清单中的活动声明中指定纵向 android scree
  • AJAX 进度条 - 轮询、Comet?

    我想要一些关于如何实施以下内容的建议 我想让我的用户通过 AJAX 了解在我的服务器上运行的任务的进度 我的服务器运行一个 PHP 脚本 该脚本使用 popen 函数通过 shell 命令下载文件 它定期回显 打印正在发生的事情 我想使用
  • HBase Shell 日志记录

    使用 HBase shell 时 我收到大量日志记录 包括 INFO 和 DEBUG 消息 虽然这对于学习 HBase 内部结构来说很有趣 但它非常冗长并且可能会掩盖输出 我尝试过以多种不同的方式更改日志记录级别 包括所描述的here ht
  • Bash如何使用awk在空行上分割文件

    我有一个文本文件 A in 我想将其拆分为多个文件 每次发现空行时都应该进行拆分 文件名应该是渐进的 A1 in A2 in I found this https stackoverflow com questions 16483507 s
  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • awk 每个文件后换行

    使用此脚本 每个字段都会根据当前文件的最长单词打印出来 但需要每个文件都有一个换行符 如何才能实现这一目标 awk BEGIN ORS n FNR NR a i 0 if length 0 gt length max max 0 l len
  • 如何使用 Perl 在 Unix 中获取文件创建时间

    如何使用 perl 在 unix 中获取文件创建时间 我有这个命令显示文件的最后修改时间 perl MPOSIX le print strftime d b Y H M localtime lstat 9 for ARGV file txt

随机推荐

  • 【手写一个RPC框架】simpleRPC-02

    目录 前言 实现 项目创建 依赖配置 common service client server 文件结构 运行 本项目所有代码可见 https github com weiyu zeng SimpleRPC 前言 在simpleRPC 01
  • Flask - 应用上下文

    目录 一 应用上下文 二 current app 在任何地点 获取flask app对象 三 g 单次请求的数据存储字典
  • 关于Unity3D中的Debug类的一些函数内容

    这篇文章主要是我对Debug类中的一些个人理解以及一些Debug的方法 请大家理性阅读 有错误可以私聊本人指出 Unity3DEngine Debug 这中间可能包含了一些常用的debug方法 比如下面这个黑科技 这是我在学习debug类的
  • 实时脑波和眼动连通性分析 python-(3)

    实时提取脑波的delta theta alpha beta 对于baseline的比率差 import os import pandas as pd import numpy as np def mkdir path 3 folder os
  • 使用rke2安装高可用k8s集群

    文章目录 使用rke2安装高可用k8s集群 使用rke2安装高可用k8s集群 服务器rke集群节点角色规划 用户 主机名 内网IP SSH端口 系统 角色 root rke server 01 192 168 2 131 22 CentOS
  • MySql操作笔记(表查看、删除、行数据删除...)

    1 显示表的结构 1 desc table name 2 describe table name 3 show columns from table name 2 显示表中所有内容 select from table name 3 行数据删
  • RS232以及RS485的一些理解

    今天 在吾爱PLC网站上阅读了关于PLC通讯的相关知识 讲得十分详细 之前一直搞不懂RS232协议 RS485协议 MODBUS协议 通过前几天在十堰的实习 在口罩生产线上的对嵌入式板卡与伺服驱动器以及HMI的连接时 查阅了一些关于通讯的知
  • C++中构造函数调用其他函数

    include
  • TTMS课程设计 管理员板块 前端页面+使用技术总结

    文章目录 一 部分实现效果 二 使用技术 三 主要代码 1 jq ajax提交表单数据 2 数据分页 3 省市区三级联动 4 选择日期 5 渲染数据 6 Session Storage在页面存储数据 7 使用es6模板字符串 四 总结 1
  • 1.数字图像识别

    传送门 https www lintcode com ai digit recognition overview 题目描述 MNIST是计算机视觉领域的 hello world 数据集 自1999年发布以来 这种手写图像的经典数据集已经成为
  • CV计算机视觉核心09-图像分割FCN(Penn-Fudan Database数据集)

    CV计算机视觉核心09 图像分割FCN Penn Fudan Database数据集 Penn Fudan Database数据集下载地址 https www cis upenn edu jshi ped html 1 首先读取数据 Pen
  • 【错误解决】git报错:you are not allowed to push code to protected branches on this project

    场景回忆 本地修改需要退回到之前的版本 打算强制push本地版本覆盖远程版本 但是在git push force后出现了以下的错误 Fix GitLab error you are not allowed to push code to p
  • [556]python实现神经网络

    神经网络 人工神经网络的洋文是Neural Network 这个计算模型在上世纪40年代就出现了 但是直到2011 2012年由于大数据和深度学习的兴起 神经网络才得到广泛应用 参看wiki神经网络 https en wikipedia o
  • SSM(ssm)心得体会之一原理理解

    最近在中软学习ssm框架的知识在这里总结一下 以前开发BS架构的web项目时 像笔者这种菜鸟就是用html js css ajax写前台 servlet作为后台接收请求 再用jdbc操作数据库 用这样的方式实现 1 前台发送请求 gt 2
  • clock gate cell 时钟门控单元

    1 结构图 锁存器 与门 D触发器 latch或reg 用于同步使能信号 防止出现亚稳态和毛刺 与门 使能信号无效时 关断模块输入时钟 D触发器 简化的reg 2 为什么需要clk gate 模块不工作时 clk翻转浪费功耗 模块 reg相
  • rsync: mkstemp ... failed: Operation not permitted

    今天在整理文件时遇到了下面的错误 rsync mkstemp abc def txt dm1u5x failed Operation not permitted 1 说说我的情况 我的 abc 目录是一个独立的 mount point 只有
  • 【通览一百个大模型】FLAN(Google)

    通览一百个大模型 FLAN Google 作者 王嘉宁 本文章内容为原创 仓库链接 https github com wjn1996 LLMs NLP Algo 订阅专栏 大模型 NLP 算法 可获得博主多年积累的全部NLP 大模型和算法干
  • [NSSCTF 2nd]

    文章目录 NSSCTF 2nd MISC gift in qrcode WEB php签到 MyBox MyBox rev MyHurricane MyJS NSSCTF 2nd MISC gift in qrcode import qrc
  • 关于Realtek 8821ce wireless lan 802.11ac网络适配器无法使用

    关于网络适配器realtek 8821ce wireless lan 802 11ac无法使用的问题 提示 并不适用于所有出现该问题的电脑 本次针对的电脑是win10系统 其他系统并没有测试过 参考1 https blog csdn net
  • 【Shell牛客刷题系列】SHELL15 去掉不需要的单词:总结awk命令中的内置函数

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 本文首先总结了awk命令中的各个内置函数的用法 然