Gunakan arahan AWK Linux untuk menjadikan pemprosesan data lebih cekap!
在Linux系统中,我们经常需要对各种不同格式的数据进行处理和分析。这时候,一个简单又强大的工具就派上用场了 —— AWK。AWK是一种文本处理工具,它可以快速地处理文本文件,并且非常适合用于日志分析、数据提取、统计报表等各种任务。在本文中,我们将为您介绍AWK的基本用法和常见应用场景,让您轻松掌握这个数据处理利器。
0、基本用法
awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理
awk命令格式如下
awk [-F field-separator] 'commands' input-file(s)
[-F 分隔符]是可选的,因为awk使用空格,制表符作为缺省的字段分隔符,因此如果要浏览字段间有空格,制表符的文本,不必指定这个选项,但如果要浏览诸如/etc/passwd文件,此文件各字段以冒号作为分隔符,则必须指明-F选项
echo "this is a test" | awk '{ print $0 }' ## 输出为 this is a test
shell
读取用户输入的字符串发现|,代表有管道。|左右被理解为简单命令,即前一个(左边)简单命令的标准输出指向后一个(右边)标准命令的标准输入awk
会根据分隔符将行分成若干个字段,为整行,1为第一个字段,$2 为第2个地段,依此类推…
为打印一个字段或所有字段,使用print命令。这是一个awk
动作
echo "this is a test" | awk '{ print $1 }' ## 输出为 this echo "this is a test" | awk '{ print $1, $2 }' ## 输出为 this is
/etc/passwd
的文件内容如下
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
举几个简单的小需求
1、只显示/etc/passwd的账户
awk -F : '{ print $1 }' /etc/passwd ## 输出为 root bin daemon adm lp

2、显示/etc/passwd的第1列和第7列,用逗号分隔显示,所有行开始前添加列名start1,start7,最后一行添加,end1,end7
awk -F ':' 'BEGIN {print "start1,start7"} {print $1 "," $7} END {print "end1,end7"}' /etc/passwd ## 输出为 start1,start7 root,/bin/bash bin,/sbin/nologin daemon,/sbin/nologin adm,/sbin/nologin lp,/sbin/nologin end1,end7
BEGIN语句在所有文本处理动作执行之前被执行,END在所有文本处理动作执行之后被执行
3、统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容
awk -F : '{ print NR " " NF " " $0 }' /etc/passwd ## 输出为 1 7 root:x:0:0:root:/root:/bin/bash 2 7 bin:x:1:1:bin:/bin:/sbin/nologin 3 7 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 7 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 7 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
1、支持内置变量
上面示例中NR
,和NF
其实就是awk
的内置变量,一些内置变量如下
变量名 解释 FILENAMEawk浏览的文件名 FS设置输入字段分隔符,等价于命令行-F选项 NF 浏览记录的字段个数 NR 已读的记录数
2、支持函数
输出字符串的长度
awk 'BEGIN { print length("this is a text") }'
## 输出为
14
将/etc/passwd
的用户名变成大写输出
awk -F ':' '{ print toupper($1) }' /etc/passwd
## 输出为
ROOT BIN DAEMON ADM LP
常用函数如下
函数名 作用 toupper(s)返回s的大写 tolower(s) 返回s的小写 length(s) 返回s长度 substr(s,p) 返回字符串s中从p开始的后缀部分
3、支持条件操作,正则表达式匹配
显示/etc/passwd中有daemon的行
awk -F ‘:’ ‘$0 ~ /daemon/’ /etc/passwd
## 输出为
daemon:x:2:2:daemon:/sbin:/sbin/nologin awk条件操作符 操作符 描述 if while do/while for break continue
输出第一个字段的第一个字符大于d的行
awk -F ':' '{ if ($1 > "d") { print $1 } else { print "-" } }' /etc/passwd
## 输出为
root - daemon - lp
可以把流程控制语句放到一个脚本中,然后调用脚本执行,如test.sh的内容如下
{ if ($1 > "d") { print $1 } else { print "-" } }
用如下方式执行,效果一样
awk -F ':' -f test.sh /etc/passwd
## 输出为
root - daemon - lp
5、应用场景
小编用awk进行文本分析比较少,主要用来写脚本
如一个weibo-interface-1.0.jar应用,启动脚本如下
start.sh nohup java -jar weibo-interface-1.0.jar >out 2>&1 &
关闭脚本如下,kill.sh
kill -9 `jps -l | grep 'weibo-interface-1.0.jar' | awk '{print $1}'`
jps -l的输出如下
70208 com.st.kmp.main.KmpService 31036 com.st.cis.main.BaiduAnalysisService 66813 weibo-interface-1.0.jar
还有就是关闭hadoop集群的所有DataNode节点(不知道hadoop的可以认为DataNode是一个集群应用),假如一个个机器jps,查看pid,kill。很麻烦,直接写了一个脚本,依次ssh到各个节点,然后执行如下命令即可
kill `jps | grep 'DataNode' | awk '{print $1}'`
jps的输出为
508 DataNode 31481 JournalNode 31973 NodeManager
总的来说,AWK是一个非常强大的数据处理工具。通过灵活的语法和功能,我们可以快速地处理不同格式的数据,并且生成各种形式的报表和统计数据。在本文中,我们介绍了AWK的基本概念、语法和常见应用场景,并且通过实例演示了如何使用AWK处理数据。希望本文能够帮助读者更好地理解AWK,提高数据处理的效率!
Atas ialah kandungan terperinci Gunakan arahan AWK Linux untuk menjadikan pemprosesan data lebih cekap!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Keperluan Sistem Kod Vs: Sistem Operasi: Windows 10 dan ke atas, MACOS 10.12 dan ke atas, pemproses pengedaran Linux: minimum 1.6 GHz, disyorkan 2.0 GHz dan ke atas memori: minimum 512 MB, disyorkan 4 GB dan ke atas ruang penyimpanan: minimum 250 mb, disyorkan 1 GB dan di atas keperluan lain:

Sebab -sebab pemasangan sambungan kod VS mungkin: ketidakstabilan rangkaian, kebenaran yang tidak mencukupi, isu keserasian sistem, versi kod VS terlalu lama, perisian antivirus atau gangguan firewall. Dengan menyemak sambungan rangkaian, keizinan, fail log, mengemas kini kod VS, melumpuhkan perisian keselamatan, dan memulakan semula kod VS atau komputer, anda boleh menyelesaikan masalah dan menyelesaikan masalah secara beransur -ansur.

Walaupun Notepad tidak dapat menjalankan kod Java secara langsung, ia dapat dicapai dengan menggunakan alat lain: menggunakan pengkompil baris arahan (Javac) untuk menghasilkan fail bytecode (fileName.class). Gunakan Java Interpreter (Java) untuk mentafsir bytecode, laksanakan kod, dan output hasilnya.

VS Kod adalah nama penuh Visual Studio Code, yang merupakan editor kod dan persekitaran pembangunan yang dibangunkan oleh Microsoft. Ia menyokong pelbagai bahasa pengaturcaraan dan menyediakan penonjolan sintaks, penyiapan automatik kod, coretan kod dan arahan pintar untuk meningkatkan kecekapan pembangunan. Melalui ekosistem lanjutan yang kaya, pengguna boleh menambah sambungan kepada keperluan dan bahasa tertentu, seperti debuggers, alat pemformatan kod, dan integrasi Git. VS Kod juga termasuk debugger intuitif yang membantu dengan cepat mencari dan menyelesaikan pepijat dalam kod anda.

VS Kod boleh didapati di Mac. Ia mempunyai sambungan yang kuat, integrasi git, terminal dan debugger, dan juga menawarkan banyak pilihan persediaan. Walau bagaimanapun, untuk projek yang sangat besar atau pembangunan yang sangat profesional, kod VS mungkin mempunyai prestasi atau batasan fungsi.

Visual Studio Code (VSCode) adalah editor cross-platform, sumber terbuka dan editor kod percuma yang dibangunkan oleh Microsoft. Ia terkenal dengan ringan, skalabilitas dan sokongan untuk pelbagai bahasa pengaturcaraan. Untuk memasang VSCode, sila lawati laman web rasmi untuk memuat turun dan jalankan pemasang. Apabila menggunakan VSCode, anda boleh membuat projek baru, edit kod, kod debug, menavigasi projek, mengembangkan VSCode, dan menguruskan tetapan. VSCode tersedia untuk Windows, MacOS, dan Linux, menyokong pelbagai bahasa pengaturcaraan dan menyediakan pelbagai sambungan melalui pasaran. Kelebihannya termasuk ringan, berskala, sokongan bahasa yang luas, ciri dan versi yang kaya

Penggunaan utama Linux termasuk: 1. Sistem Operasi Pelayan, 2. Sistem Terbenam, 3. Linux cemerlang dalam bidang ini, menyediakan kestabilan, keselamatan dan alat pembangunan yang cekap.

Untuk melihat alamat repositori Git, lakukan langkah -langkah berikut: 1. Buka baris arahan dan navigasi ke direktori repositori; 2. Jalankan perintah "Git Remote -V"; 3. Lihat nama repositori dalam output dan alamat yang sepadan.
