首页 > 系统相关 >Linux文本处理三剑客之awk

Linux文本处理三剑客之awk

时间:2023-08-06 17:47:11浏览次数:45  
标签:rhett 4s 文本处理 awk Linux test txt 三剑客

工欲善其事,必先利其器。

掌握了Linux文本三剑客,可谓是事半功倍。

对于刚接触Linux的同学来说,Linux的各种命令真的时让人望而生畏。工作中看到大神们一通操作猛如虎,各种命令以及参数眼花缭乱。

当我们用过一些命令,但又不熟悉得情况下,这个时候就得从全局入手,看看Linux有哪几类命令,先提纲挈领,至少我们能知道完成什么样得功能我需要用什么命令,至于细节参数,查手册多用几次就熟悉了。而不是每次都束手无策,盲目查找。

今天我们就来看一下Linux对于文本处理的三大利器之一awk。基本上可以满足对文本处理的所有任务。

awk

简介

AWK是Linux强大的文本处理工具,其名称由来取自于三位创始人姓氏的首字母。

命令格式

awk [options] 'pattern {action}' file1 file2, ...
awk [options] 'script' file1 file2, ...

pattern: 模式或条件

action: 对数据处理,常用print

常用内建变量

FS: 列分割符。指定每行文本的字段分割符,默认为空格或者治标位。与“-F”作用相同

NF: 当前处理的行的字段个数;

NR: 当前处理的行的行号;

$0: 当前处理的行的整行内容;

$n: 当前处理行的第n个字段;

FILENAME: 被处理的文件名

基本用法

测试文件test.txt, 注意空格和逗号;

(base) rhett@LAPTOP-MV0SUCM6:~$ cat test.txt
today,is, a sunny, day;
I read,a book, this afternoon;
And plan,to do, some coding,after dinner.
Have a good day.

案例1

按行输出:输出文件的1~3行

(base) rhett@LAPTOP-MV0SUCM6:~$ awk '(NR>=1)&&(NR<=3)' test.txt
today,is, a sunny, day;
I read,a book, this afternoon;
And plan,to do, some coding,after dinner.

案例2

按字段输出:输出每行中的第1、3个字段(默认空格分割符)

(base) rhett@LAPTOP-MV0SUCM6:~$ awk '{print $1,$3}' test.txt
today,is, sunny,
I book,
And do,
Have good

案例3

指定分隔符输出

(base) rhett@LAPTOP-MV0SUCM6:~$ awk -F ',' '{print $1,$2}' test.txt
today is
I read a book
And plan to do
Have a good day.

案例4

输出分段输大于3的行

(base) rhett@LAPTOP-MV0SUCM6:~$ awk -F ',' 'NF>3 {print $1,$2}' test.txt
today is
And plan to do

案例5

输出文件参数

(base) rhett@LAPTOP-MV0SUCM6:~$ awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' test.txt
FILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS
---------------------------------------------
test.txt    2    1         4    1


test.txt    2    2         5    2


test.txt    2    3         6    3


test.txt    2    4         4    4


标签:rhett,4s,文本处理,awk,Linux,test,txt,三剑客
From: https://www.cnblogs.com/bailiji/p/17609647.html

相关文章

  • awk的经典实战案例
    前言这些案例比较经典,有些比较具有代表性。1.插入几个新字段在"abcd"的b后面插入3个字段efg。echo"abcd"|awk'{$2=$2"efg";print}'2.格式化空白移除每行的前缀、后缀空白,并将各部分左对齐。aaaabbbcccbbba......
  • awk命令详解
    awk变量1、主要作用用来处理文本,将文本按照指定的格式输出。其中包含了变量,循环以及数组2、格式2.1awk[选项]'匹配规则和处理规则'[处理文本路径][root@localhost~]#awk-F:'{print$1}'/etc/passwd匹配规则主要是:正则表达式处理规则主要是:设置变量......
  • awk的基础应用
    awk的基础应用AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一awk命令的基本格式为:awk-F“”‘{print'commands'}’filename-F:指定分隔符-vvar=val:在执行处理过程之前,设置一个变量var,并给其设备初始值为valawk保留字......
  • linux 三剑客命令
    Linux命令集合目录Linux命令集合基础概念1软连接和硬链接1.1基础概念1.2如何创建软链接零.正则01区别02通配符03基础正则04扩展正则一awk取列1.1基本用法1.2取列案例1.3取行案例取反1.4取行取列结合案例1.5取偶数和奇数1.6过滤取反排除1.7取IP地址多个分隔......
  • linux 中 awk数组统计每列、行数据之和及平均值
     001、列[root@PC1test02]#lsa.txt[root@PC1test02]#cata.txt##测试数据362825841382##统计每列数据之和[root@PC1test02]#awk'{for(i=1;i<=NF;......
  • linux 中 awk命令中 getline的用法
     001、[root@PC1test02]#ls[root@PC1test02]#seq1012345678910[root@PC1test02]#seq10|awk'{getline;print$0}'##getline把两行当作一行处理,而且跳过了第一行246810 002、[root@PC1test02]#ls[root@PC1test02]#seq1012345......
  • linux 中awk命令getline函数实现从内部读取文件内容
     001、[root@PC1test02]#lsa.txtb.txt[root@PC1test02]#cata.txt##测试数据123456[root@PC1test02]#catb.txt##测试数据111213141516[root@PC1test02]#awk'{printf"%s",$0;getline<"b.txt";p......
  • linux awk 命令中 next 和 getline
     001、continue[root@PC1test01]#lsdata[root@PC1test01]#catdata##测试数据1000naughty500cc400zoer100[root@PC1test01]#awk'{if(NR==2){next};print$0}'data##next相当于内层循环的continue,表示跳过该次迭代1000cc400zoer100......
  • awk NR详解!awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
    NF字段个数,(读取的列数)NR记录数(行号),从1开始,新的文件延续上面的计数,新文件不从1开始FNR读取文件的记录数(行号),从1开始,新的文件重新从1开始计数FS输入字段分隔符,默认是空格OFS输出字段分隔符默认也是空格RS输入行分隔符,默认为换行符ORS输出行分隔符,默认为换行符NF读取记录的......
  • 前端三剑客之CSS
    一、CSS介绍1、CSS(层叠样式表,CascadingStyleSheets)是一种用于描述网页内容(HTML或XML等)外观样式的标记语言。它是一种样式表语言,用于控制网页的布局、字体、颜色、大小、间距以及其他与显示有关的属性。2、css学习步骤先学习选择器,作用就是如何找到标签找到标签之后,给标签......