検索

Linuxのawkコマンドの使い方

Feb 01, 2023 pm 06:46 PM
linuxawkコマンド

Linux では、awk コマンドはテキスト データ処理ツールであり、テキスト ファイルの書式設定や、テキスト ファイルのより複雑な処理と分析の実行に適しています。構文は「awk [オプション] 'パターン[アクション]' ファイル」です。 ..」 Awk には強力なテキスト フォーマット機能があり、たとえば、一見不規則に見える大量のログ ファイルやテキスト ファイルなどの場合、awk コマンドを実行すると、フォーマットされた出力はアプリケーション レベルのデータ分析に使用できるプロフェッショナルなスタイルになります。

Linuxのawkコマンドの使い方

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux システムには、awk というより強力なテキスト データ処理ツールがあります。 1970 年代後半に誕生し、それが多くの Linux ユーザーに影響を与えた理由の 1 つである可能性があります。

awk コマンドの名前は、「厄介な」という言葉から来ているのではないかと推測する人もいます。実際にはそうではありません。このコマンドの設計者は 3 人います。彼らの姓は、Aho、Weingberger、Kernighan です。awk は、マスターの姓の頭文字であるこの 3 人から取られています。

awk には強力なテキスト フォーマット機能があります。たとえば、一見不規則に見える大量のログ ファイルやテキスト ファイルなどの場合、awk コマンドを実行した後、フォーマットされた出力をプロフェッショナル アプリケーションとして使用できます。 . レベルデータ分析スタイル;

awk はプログラミング言語のようなもので、条件判断、配列、ループ、その他多くの機能をサポートしています;

linux 三銃士

  • grep は、単純にテキスト コンテンツの検索または一致を得意とします。

  • sed は、テキストの編集と一致したテキスト コンテンツの処理を得意とします。

  • awk、テキスト ファイルの書式設定、およびテキスト ファイルのより複雑な処理と分析の実行に適しています。

#awk 理論的基礎

1. awk 構文

awk  [option]  'pattern[action]'  file ...

awk   参数       条件动作           文件

Linuxのawkコマンドの使い方

##action はアクションを指します。awk はテキストの書式設定が得意で、結果を書式設定して出力できるため、最も一般的には使用されるアクションは print と printf

2、awk 処理テキスト コンテンツ モード

awk はデフォルトで区切り文字としてスペースを使用し、複数のスペースは区切り文字として 1 つのスペースとしても認識されます;
  • awk はファイルを 1 行ずつ処理します。1 行が処理された後、次の行が処理されます。
  • awk はユーザー指定の文字に従って区切ることができます指定しない場合、デフォルトはスペースです;
1. awk 組み込み変数

組み込み変数 $n$0FSNF(フィールド数)NR(レコード数)

更多的内置变量,可通过 man awk命令进行查看

简单案例展示

提前准备一个文本,内容如下

Linuxのawkコマンドの使い方

1、输出第二列内容

awk '{print $2}' alx.txt

Linuxのawkコマンドの使い方

2、输出多列内容

直接在第一步后面的基础上追加,中间用 “,” 分割

awk '{print $2,$3}' alx.txt

Linuxのawkコマンドの使い方

3、查看第三行内容

考察对NR的使用,NR表示第N行记录的模式匹配

awk 'NR==3{print $0}' alx.txt

Linuxのawkコマンドの使い方

输出多行

awk 'NR==5,NR==6{print $0}' alx.txt

Linuxのawkコマンドの使い方

4、输出从第3到第五行,并显示行号

awk 'NR==3,NR==5 {print NR,$0}' alx.txt

Linuxのawkコマンドの使い方

5、自定义输出内容

某些情况下,需要给每一列添加类似于excel的表头信息,就可以考虑使用awk的自定义输出;

awk '{print "第一列: "$1,"第二列: "$2}' alx.txt

Linuxのawkコマンドの使い方

需要注意的是大括号外面的使用 ’ 单引号,括号里面的使用双引号

二、awk参数

説明
区切り文字を指定した後、現在のフィールドがn 番目の列が見つかります
完全な 1 行レコード
フィールド区切り文字、デフォルトはスペースです
フィールドを分割した後、現在フィールドはいくつありますか?
現在のレコード番号、行番号
参数 说明
-F 指定分隔字段符
-v 定义或修改一个awk内部变量
-f 从脚本文件中读取awk命令

上文谈到,awk默认的字段分隔符为空格,但是像下面这样的文本,以 # 为分隔符,就需要用到自定义分隔符;

Linuxのawkコマンドの使い方

1、显示第一列和第二列内容

awk -F "#" '{print $1,$2}' zcy2.txt

Linuxのawkコマンドの使い方

2、显示文件第一列,倒是第一列,和倒数第二列的内容

awk '{print $1,$(NF-1),$(NF-2)}' alx.txt

1Linuxのawkコマンドの使い方

3、取出本机的IP地址

1Linuxのawkコマンドの使い方

使用awk的方式获取的话,如果以空格为分隔符,我们发现目标字段在第二行的第二列,使用下面的命令即可,看起来,比起sed和grep命令似乎更简单;

ifconfig eth0 | awk 'NR==2{print $2}'

1Linuxのawkコマンドの使い方

4、取出密码文件中的第一列和最后一列

考察对自定义输入分隔符的使用,可以看到,下面的文本文件中,可以考虑使用 : 进行分割;

1Linuxのawkコマンドの使い方

awk -F ':' '{print $1,$NF}' pwd2.txt

1Linuxのawkコマンドの使い方

三、OFS输出分隔符

通过上文的学习,我们知道awk命令执行后,默认采用空格分割字段,而这个空格就是默认的输出分割符,

单在某些情况下,为了将数据展示的效果更加醒目一些,就可以使用OFS的自定义输出分隔符;

仍然以上面的密码文本为例,输出第一列和最后一列的字段;

awk -F ':' -v OFS=' *** ' '{print $1,$NF}' pwd2.txt

该表默认输出分隔符,直接在awk后面使用: -v OFS=‘自定义输出分隔符’

1Linuxのawkコマンドの使い方

四、awk变量

awk参数

参数 说明
-F 指定分隔字段符
-v 定义或修改一个awk内部变量
-f 从脚本文件中读取awk命令

对于awk来讲,变量分为:内置变量和自定义变量

awk内置变量

参数 说明
FS 输入字段分隔符,默认为空白字符
OFS 输出字段分隔符,默认为空白字符
RS 输入记录分隔符,指定输入时的换行符
ORS 输出记录分隔符,输出时用指定符号替换换行符
NF 当前行的字段个数,字段数量
NR 行号,当前处理文本行的行号
FNR 各文件分别计数的行号
FILENAME 当前文件名
ARGC 命令行参数个数
ARGV 数组,保存的是命令行所给定的各个参数

比较常用的内置变量包括: NR,NF,FNR

FILENAME 使用

FILENAME 为awk的内置变量,通过下面这个命令,可以看到在每行记录之前,输出了当前文件名称;

awk 'NR==1,NR==3{print FILENAME,$0}' alx.txt

1Linuxのawkコマンドの使い方

ARGV使用

先来看下面这条命令的执行结果

awk 'NR==1,NR==3{print ARGV[0],ARGV[1],$0}' alx.txt

1Linuxのawkコマンドの使い方

可以发现,在输出的每一行记录前面,拼上了 awk 和 alx.txt这两个字段,这两个字段就是这行命令整体解析出来的2个内置参数;

自定义变量

看下面这条命令输出效果,通过-v参数,可以自定义变量进行参数传递;

awk -v myname="zcy" 'BEGIN{print "我的名字是?" ,myname}'

1Linuxのawkコマンドの使い方

五、awk格式化输出

在上文,我们接触的是awk的输出功能,主要使用了 print 这个进行输出,它只能对文本进行简单的输出,但是并不能美化或者修改输出格式;

printf 格式化输出

如果对C语言有过了解的同学,对printf 并不陌生,使用这个命令(函数)可以对文本进行格式化输出;

printf与print的几点区别

  • printf 需要指定format;
  • format 用于指定后面的每个 item输出格式;
  • printf 语句不会自动打印换行符; \n ; print 默认添加换行符;

如下,假如我们直接使用 printf 这样操作,看下效果

awk '{printf $0}' alx.txt

Linuxのawkコマンドの使い方

明显来说,把所有内容都输出到同一行了,这时候,就需要使用 printf的格式化输出来控制;

awk '{printf "%s\n", $0}' alx.txt

2Linuxのawkコマンドの使い方

再看一个案例,使用 printf 将文本中的每一列添加前置输出

awk '{printf "第一列:%s   第二列:%s   第三列:%s\n" ,$1,$2,$3}' alx.txt

2Linuxのawkコマンドの使い方

六、awk模式pattern

上文了解到,awk的语法如下 :

awk [option] ‘pattern[action]’ file …

而且我们了解到,awk是按行处理文本,以上都是关于 print 相关,接下来,聊聊pattern相关的内容;

在pattern中,有个比较常见的pattern,BEGIN和END;

  • BEGIN 模式是处理文本之前需要执行的动作;
  • END模式是处理完成所有的行之后执行的操作;
awk 'BEGIN{print "小明在学linux"}'

2Linuxのawkコマンドの使い方

或者下面这样

awk 'BEGIN{print "小明在学linux"} {print $0}END{print "处理结束"}' alx.txt

2Linuxのawkコマンドの使い方

注意:BEGIN 和 END分别放到处理文本内容前后即可

awk如果不指定模式是按行处理,如果指定了模式,只有符合模式的才会被处理

awk常用模式

关系运算符 说明
小于
小于等于
== 等于
!= 不等于
>= 大于等于
~ 匹配正则
!~ 不匹配正则

1、打印前三行的文本内容

awk &#39;NR<=3{print $0}&#39; alx.txt

2Linuxのawkコマンドの使い方

2、匹配密码文本中含有 zcy 的行

awk &#39;/^zcy/{print $0}&#39; pwd.txt

2Linuxのawkコマンドの使い方

3、格式化输出 /etc/passwd 的部分字段

awk -F ":" &#39;BEGIN{print"用户名\t\t\t字段1\t\t     字段2\t\t     权限"} {printf "user:%-20s%-20s%-20s%-20s\n", $1,$4,$5,$7}&#39; pwd.txt

2Linuxのawkコマンドの使い方

4、找出pwd文件中nologin的用户

2Linuxのawkコマンドの使い方

awk &#39;/\/sbin\/nologin$/{print NR,$0}&#39; pwd.txt

2Linuxのawkコマンドの使い方

5、找出 下面这个区间的文本行

Linuxのawkコマンドの使い方

awk &#39;/^daemon/,/^operator/{print NR,$0}&#39; pwd.txt

3Linuxのawkコマンドの使い方

相关推荐:《Linux视频教程

以上がLinuxのawkコマンドの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Linux操作のマスター:実用的なガイドLinux操作のマスター:実用的なガイドApr 12, 2025 am 12:10 AM

Linux操作をマスターする理由は、幅広いアプリケーションシナリオと強力な機能です。 1)Linuxは、開発者、システム管理者、テクノロジー愛好家に適しており、サーバー管理、組み込みシステム、コンテナ化テクノロジーで使用されています。 2)Linuxの学習は、ファイルシステム構造、シェルの使用、ユーザー許可管理、プロセス管理から始めることができます。 3)Linuxコマンドラインは、LS、MKDIR、CDなどのシェルを介してコマンドを実行し、リダイレクトおよびパイプライン操作をサポートするコアツールです。 4)高度な使用法には、バックアップスクリプトなどの自動化されたスクリプトの書き込み、TARコマンド、条件付き判断が含まれます。 5)一般的なエラーには、エコー、セットX、$?を介してデバッグできます。 6)パフォーマンス最適化の提案

Linuxの5つの柱:彼らの役割を理解するLinuxの5つの柱:彼らの役割を理解するApr 11, 2025 am 12:07 AM

Linuxシステムの5つの柱は次のとおりです。1。Kernel、2。SystemLibrary、3。Shell、4。FileSystem、5。SystemTools。カーネルはハードウェアリソースを管理し、基本的なサービスを提供します。システムライブラリは、アプリケーション用の事前コンパイルされた機能を提供します。シェルは、ユーザーがシステムと対話するインターフェイスです。ファイルシステムはデータを整理して保存します。また、システムツールはシステム管理とメンテナンスに使用されます。

Linuxメンテナンスモード:ツールとテクニックLinuxメンテナンスモード:ツールとテクニックApr 10, 2025 am 09:42 AM

Linux Systemsでは、起動時に特定のキーを押すか、「sudosystemctlrescue」などのコマンドを使用することにより、メンテナンスモードを入力できます。メンテナンスモードを使用すると、管理者は、ファイルシステムの修復、パスワードのリセット、セキュリティの脆弱性など、干渉なしにシステムメンテナンスとトラブルシューティングを実行できます。

主要なLinux操作:初心者向けガイド主要なLinux操作:初心者向けガイドApr 09, 2025 pm 04:09 PM

Linuxの初心者は、ファイル管理、ユーザー管理、ネットワーク構成などの基本操作をマスターする必要があります。 1)文件管理:使用mkdir、タッチ、ls rm 3)ネットワーク構成:ifconfig、echo、およびufwコマンドを使用します。これらの操作はLinuxシステム管理の基礎であり、それらをマスターすることでシステムを効果的に管理できます。

sudoを使用して、Linuxのユーザーに高い特権を付与するにはどうすればよいですか?sudoを使用して、Linuxのユーザーに高い特権を付与するにはどうすればよいですか?Mar 17, 2025 pm 05:32 PM

この記事では、LinuxのSudo特権を管理する方法について説明します。重要な焦点は、 /etc /sudoersの安全性とアクセスを制限することです。

LinuxでSSHに2要素認証(2FA)を実装するにはどうすればよいですか?LinuxでSSHに2要素認証(2FA)を実装するにはどうすればよいですか?Mar 17, 2025 pm 05:31 PM

この記事では、Google Authenticatorを使用してLinux上のSSH用の2要素認証(2FA)のセットアップ、インストール、構成、およびトラブルシューティング手順の詳細に関するガイドを提供します。 Enhanced Secなど、2FAのセキュリティ利益を強調しています

TOP、HTOP、VMSTATなどのツールを使用してLinuxのシステムパフォーマンスを監視するにはどうすればよいですか?TOP、HTOP、VMSTATなどのツールを使用してLinuxのシステムパフォーマンスを監視するにはどうすればよいですか?Mar 17, 2025 pm 05:28 PM

この記事では、Linuxシステムのパフォーマンスを監視するためにTop、HTOP、およびVMSTATを使用して、効果的なシステム管理のための独自の機能とカスタマイズオプションを詳述することについて説明します。

パッケージマネージャー(apt、yum、dnf)を使用してLinuxのソフトウェアパッケージを管理するにはどうすればよいですか?パッケージマネージャー(apt、yum、dnf)を使用してLinuxのソフトウェアパッケージを管理するにはどうすればよいですか?Mar 17, 2025 pm 05:26 PM

記事では、APT、Yum、およびDNFを使用してLinuxでソフトウェアパッケージの管理を行い、インストール、更新、および削除をカバーしています。さまざまな分布に対する機能と適合性を比較します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。