linux awk操作汇总(忘了来这里查)

这篇具有很好参考价值的文章主要介绍了linux awk操作汇总(忘了来这里查)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果说sed可以完成行级别文本处理,则awk可以处理文本的每列。

持续扩充中...

目录

1,从命令输出查看指定列

2,查看文件指定列

3,原地修饰所查看的列

4,输出文件指定行(按行数)

 5,内容包含或匹配查找

查看文件中包含指定字符的行

查看文件中包含指定字符的行数

6、输出符合条件的列 对应的行

输出文件中第二列大于3的行

输出文件中第二列的值能整除2的行

输出文件中第一列和第二列相同的行

输出文件中第一列和第二列不相同、且第一列值大于7的行

7,列替换

将第一列中的v字符替换为new

将第一列整体替换为new

8,awk结果写入文件

9,按需修改文件名(批量)

10,删除空格或指定字符

删除每行开头的所有空格

删除每行开头的所有空格和中划线


1,从命令输出查看指定列

如过滤查看docker镜像指定列:仅查看镜像id。

先查看所有镜像,如下:

docker images
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
kindest/node   v1.27.3   89e7dc9f9131   2 months ago    932MB
hello-world    latest    feb5d9fea6a5   23 months ago   13.3kB

如果只想获得镜像id,则:

docker images| awk '{print $3}'

效果:

IMAGE
89e7dc9f9131
feb5d9fea6a5

2,查看文件指定列

来构造一个多个列的文件:

docker images|  awk '{print $2,$3}' > aaa

如上,将镜像列表的第2、3列内容写到了文件aaa中,查看一下:

#cat aaa

TAG IMAGE
v1.27.3 89e7dc9f9131
latest feb5d9fea6a5

查看aaa文件的第2列:

awk '{print $2}' aaa

效果:

IMAGE
89e7dc9f9131
feb5d9fea6a5

3,原地修饰所查看的列

如查看docker镜像列表时,给每个镜像id前后都拼接一个下划线:

docker images|  awk '$3 = "_"$3"_"'

效果:

REPOSITORY    TAG   _IMAGE_   ID    CREATED   SIZE
kindest/node v1.27.3   _89e7dc9f9131_   2 months ago 932MB
hello-world latest    _feb5d9fea6a5_    23 months ago 13.3kB

可以看到原地修改$3,拼接_是实现了,可是怎样才能只显示镜像ID这一列?

docker images|  awk '{$3 = "_"$3"_";print $3}'

效果:

_IMAGE_
_89e7dc9f9131_
_feb5d9fea6a5_

即 使用print实现。

4,输出文件指定行(按行数)

假设有文件aaa:

TAG IMAGE
v1.27.3 89e7dc9f9131
latest feb5d9fea6a5

输出第3行

awk 'NR==3' aaa

也可以用sed实现:

sed -n 3p aaa

 5,内容包含或匹配查找

查看文件中包含指定字符的行

如下,查看文件中包含hello的行:

awk '/hello/' a

或使用sed实现:

sed -n '/hello/p' a

查看文件中包含指定字符的行数

awk '/hello/' a| wc -l

也可以grep实现:

grep -c "hello" a

6、输出符合条件的列 对应的行

常见运算符:>   <  >=   <=   ==   !=   %求余

有文件bbb内容如下:

#cat bbb
a   b
1   1
4   4
5   6
8   7

输出文件中第二列大于3的行

awk '{if($2>3)print}' bbb

效果:

a   b
4   4
5   6

输出文件中第二列的值能整除2的行

awk '{if($2%2==0)print}' bbb

效果:

a   b
4   4
5   6

输出文件中第一列和第二列相同的行

awk '{if($1==$2)print}' bbb

效果:

1   1
4   4

输出文件中第一列和第二列不相同、且第一列值大于7的行

awk '{if($1!=$2 && $1>7)print}' bbb

效果:

a   b
8   7

输出文件中第一列值大于等于5的行数

awk '{if($1>=5)print}' bbb| wc -l

效果:

3

7,列替换

替换主要用到gsub函数。格式:gsub(/原内容/, 修改后内容, [ 指定列,不指定则默认所有列 ] )

假设有文件aaa;

TAG IMAGE
v1.27.3 89e7dc9f9131
latest feb5d9fea6a5

将第一列中的v字符替换为new

接下来我们将第一列中的v字符替换为new:

awk '{gsub(/v/,"new",$1);print $1}' aaa

效果:

TAG
new1.27.3
latest

如果想都看到每列,则将print后的$1去掉即可。

将第一列整体替换为new

awk '{gsub($1,"new",$1);print}' bbb

效果:

new b
new 1
new 4
new 6
new 7

8,awk结果写入文件

docker images|  awk '{$3 = "_"$3"_";print $3}' > aaa

和大多数指令用法一样,使用>完成写入。如果是>> aaa,就是追加而不覆盖。

9,按需修改文件名(批量)

如下,当前目录有两个文件:

#ls
aaa  bbb

接下来我们将它们文件名都带一个.txt并打印出来:

ls | awk '{print $0=$0".txt"}'

效果:

aaa.txt
bbb.txt

注意,print这里使用$1也可以($2就不行了),但如果前面是用 ll 命令查询,则后面只能用$0得到文件。

此时仅是打印出来看看长什么样,文件名其实没有变。如果要实际更改文件名,则结合使用mv命令通过管道执行:

ls | awk '{print "mv",$0,$0".txt"}' | bash

效果:

#ls
aaa.txt  bbb.txt

10,删除空格或指定字符

删除每行开头的所有空格

awk 'sub(/^ */, "")' ccc

如果去掉*,则仅去除每行第一个空格。同时注意,此操作不会实际修改文件,仅打印展示。

或:文章来源地址https://www.toymoban.com/news/detail-699756.html

awk 'sub(/^[ ]*/, "")' ccc

删除每行开头的所有空格和中划线

awk 'sub(/^[ -]*/, "")' ccc

到了这里,关于linux awk操作汇总(忘了来这里查)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gitee码云仓库操作步骤---忘了就来看看

    有时一段时间不用就会遗忘操作,又得在网上找半天费时,想了想还是自己记录一下找起来方便,下面的是具体到每一步的操作 1.首先进入git官网,新建一个仓库 2.新建仓库选项如下(只输入了仓库名),点击创建,完成仓库创建 3.创建完成以后会跳转进仓库的设置页面,点击初始化rea

    2024年02月04日
    浏览(29)
  • linux密码忘了?一招解决

    目录 一、前言 二、进入编辑界面 三、单用户模式 四、修改密码 五、更新信息 六、退出 七、验证 版本: centos7.9、VMware15.5 在我们学习linux运行级别的时候,面试题可能会出如何找回root密码,下面来详细的介绍一波,实测有效。  首先,重启系统,这时候注意一下时间只有

    2024年02月05日
    浏览(66)
  • linux操作系统常见指令汇总

    目录 1.ls 指令 2.pwd命令 3.cd 指令 4. touch指令 5.mkdir指令: 6.rmdir指令 rm 指令(重要): 7.man指令: 8.cp指令: 9.mv指令:  10.more指令  11.less指令 12.head指令 13.tail指令 14.时间相关的指令 15.Cal指令 16.find指令: 19.tar指令: 打包/解包,不打开它,直接看内容 20.bc指令: 21.uname –

    2024年02月12日
    浏览(36)
  • Linux网络操作系统项目实用教程题目汇总

    目录 单选汇总 项目一 认识Linux网络操作系统与安装 (1)简述 Linux 的版本以及特性? (2)如何安装 Centos 7 操作系统? (3)用户如何进行图形化与文本模式登录、重启、关机与注销?“ (4)如何进行终端界面切换? 项目二 Linux基础操作命令-使用Shell命令 (1)什么是Shell?它的功能是

    2024年02月11日
    浏览(26)
  • 【Linux·克莱因计划】实用指令操作汇总合集(下)

    Hi!我是Duoni! 目录 11.more指令 12.less指令 13.echo指令 14.输出重定向 🍑tips:输出重定向‘’有什么含义? 15.追加重定向 🍑tips:追加重定向‘’又是什么? 🍑tips:输出重定向与追加重定向的区别? 16.输入重定向 🍑test:浅识输入重定向‘’ 17.head指令 18.tail指令 19.head与t

    2024年02月02日
    浏览(26)
  • Stable Diffusion WebUI画出了黑图怎么办?这里汇总了所有解决办法

    我们在用sd生成图片的时候是不是经常遇到黑图? 这到底是什么原因导致的呢? 接下来我将所有可能出现的原因和解决办法进行一个汇总。 目录 1. 版本问题 2. 没有加xformers 3. 生成图片尺寸太大溢出导致

    2024年02月08日
    浏览(27)
  • linux8基本操作汇总(oraclelinux8.8测试)

    官网下载OracleLinux8.8 https://yum.oracle.com/ISOS/OracleLinux/OL8/u8/x86_64/OracleLinux-R8-U8-x86_64-dvd.iso Linux8配置本地yum源 #  cat /etc/yum.repos.d/dvd.repo [InstallMedia] name=CentOS Linux 8 baseurl=file:///mnt/BaseOS gpgcheck=0 enabled=1 [AppStream] name=AppStream baseurl=file:///mnt/AppStream enabled=1 gpgcheck=0 挂接本地iso文件 # 

    2024年02月11日
    浏览(23)
  • Linux服务器上EMQX Dashboard控制台登录密码忘了

    1.登录阿里云服务器管理控制台,[ 远程连接 ] 接入阿里Linux服务器;  2.输入以下代码 cd /usr/lib/emqx ,表示去到库目录emqx下 ./bin/emqx_ctl admins, 回车会出现 第一条命令添加用户(输入新用户名+新密码),第二条命令重置密码(原用户名+新密码),第三条命令删除用户(删除

    2024年02月15日
    浏览(39)
  • Linux之AWK

    目录 Linux之AWK  定义 语法格式 常用选项  awk 变量 内置变量         格式         案例          (1)编写一个文本名字叫做awkdemo,里面内容如下          (2)FS指定输入分隔符          (3)OFS指定输出分隔符          (4)RS指定输入的换行符      

    2024年02月13日
    浏览(23)
  • linux awk文本

    目录 一、awk概念 二、awk的工作过程 三、awk字符 四、内置变量 五、getline  六、awk的精准筛选 七、例子演示 八、实验演示                           一、awk概念 1.概念:awk 是一个功能强大 的编辑工具,逐行读取输入文本,主要作用于文件内容,AWK信息的读入也是逐行指

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包