grep awk sed Three Musketeers +基本的な使用法の概要

grepの紹介

  1. grepは、Linuxで最も一般的に使用されるテキスト処理ツールの1つです。
  2. sed awkと一緒に、彼らはLinuxでは3つの銃士と呼ばれています!
  3. grepは、ウィンドウでtxtファイルを開き、ショートカットキー「Ctrl + F」を使用してテキスト内の文字列を検索するようなものです。grepは文字検索ツールとして理解できます。
  4. grepのフルネームはグローバル検索の正規表現であり、行を印刷します。これはグローバル検索を意味します。

grepの基本的な使用法

# grep [选项] 正则表达式 [目标文件]
grep [OPTIONS] PATTERN [FILE...]    
# grep [选项] -e 正则表表达式 或 -f 包含正则表表?

共通のパラメーター

  • -v:逆検索、一致するパターンのない行を表示

  • -n:マッチング結果の行番号を表示します

  • -i:検索時に大文字と小文字を区別しない

  • -o:修飾された文字列のみを表示します

  • -e:論理または関係の複数のオプションのマッチングを実現します

  • -E:拡張正規表現を使用します。「-E」オプションを使用する場合は、egrepを使用するのと同じです。

  • -w:完全一致キーワード

  • -c:一致した行の数をカウントします。一致した行の総数であることに注意してください

  • -q:クワイエットモード、情報を出力しません

  • -l:出力マッチング結果を表示せず、マッチングファイル名のみを表示します

  • -A <表示行数>または--after-context = <表示行数>:テンプレートスタイルに準拠した列の表示に加えて、行後のコンテンツが表示されます。

  • bまたは--byte-offset:パターンに一致する行を表示する前に、行の最初の文字の番号をマークします。

sedの紹介

ストリームエディタ。主にテキストコンテンツのフィルタリングと置換に使用されます

動作原理:

  1. Sedはストリームエディタであり、ユーザーが操作することはできません。Sedは、テキストコンテンツを行単位で処理します。行がメモリに読み込まれるたびに、パターンスペースと呼ばれます。
  2. 元のファイルはデフォルトでは変更されません。変更する必要がある場合は、-iパラメーターを追加する必要があります。
  3. Sedにはモードスペースとホールドスペース(ホールドスペース)があり、モードスペースのコンテンツはデフォルトで標準出力に出力されます
  4. sedが各行を読み取ると、コンテンツがメモリに保存されます
  5. -yオプションを除き、正規および拡張正規式をサポートします

sedの基本的な使い方

sed [选项] '定址和命令' 处理的文件 

一般的に使用されるオプション

  • -i:直接変更
  • -n:デフォルトの出力をキャンセルします

一般的に使用されるパラメーター

  • p:印刷

  • d:削除

  • s:置換(文字列が置換されます)g:グローバルパターン、一致したすべての文字列が置換されます(gがない場合、デフォルトでは最初の一致する行のみが置換されます)

  • y:文字を変更する(1対1の対応)

  • i:挿入(一致する行の前)

  • a:追加(行を一致させた後)

  • c:変更(一致した行全体が変更されます)

  • r:ファイルから読み取る

  • w:ファイルを書き込む

  • q:最初の一致を見つけて終了します

awkの紹介

  1. Awkは優れたテキスト処理ツールです。(この名前は、創設者のAlfred Aihou、Peter Weinberg、Brian Colinhamの姓の最初の文字に由来しています)

  2. このパターンは、AWKがデータで探しているものを表し、アクションは、一致するコンテンツが見つかったときに実行される一連のコマンドです。

awkの基本的な使用法

-Fは区切り文字をコロンとして指定します

構文形式:

awk  -F  '分隔符'  '/模式/{操作}'   文件名

awk組み込み変数

属性  		说明
$0  	当前记录(作为单个变量)
$1~$n   当前记录的第n个字段,字段间由FS分隔
FS 		输入字段分隔符 默认是空格
NF 		当前记录中的字段个数,就是有多少列
NR  	已经读出的记录数,就是行号,从1开始
RS  	输入的记录他隔符默 认为换行符
OFS     输出字段分隔符 默认也是空格
ORS     输出的记录分隔符,默认为换行符
ARGC    命令行参数个数
ARGV    命令行参数数组
FILENAME    当前输入文件的名字
IGNORECASE  如果为真,则进行忽略大小写的匹配
ARGIND  	当前被处理文件的ARGV标志符
CONVFMT     数字转换格式 %.6g
ENVIRON     UNIX环境变量
ERRNO   	UNIX系统错误消息
FIELDWIDTHS     输入字段宽度的空白分隔字符串
FNR    		 当前记录数
OFMT    	数字的输出格式 %.6g
RSTART  	被匹配函数匹配的字符串首
RLENGTH     被匹配函数匹配的字符串长度

awk一般的に使用される変数

  • NF:最後のフィールドを表します
[root@localhost ~]# awk -F ':' '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
  • $(NF-1):最後から2番目のフィールドを示します
[root@localhost ~]# awk -F ':' '{print $(NF-1)}' /etc/passwd
/root
/bin
/sbin
/var/adm
/var/spool/lpd
  • NR:現在処理されている行を示します
2行目を出力
[root@localhost ~]# awk -F ":" 'NR==2 {print}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
3行後
[root@localhost ~]# awk -F ':' 'NR>3 {print}' /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

awk組み込み関数

  • toupper()は、文字を大文字に変換するために使用されます[t ^ ber]
[root@localhost ~]# awk -F ':' '{print toupper($1)}' /etc/passwd
ROOT
BIN
DAEMON
ADM
LP
  • tolower()は、文字列を小文字に変換するために使用されます
[root@localhost ~]# awk '{print tolower($1)}' /tmp/aa.txt
root
bin
daemon
adm

awk ifelseステートメント

  • $ 1 == rootの場合は最初のフィールドを印刷し、そうでない場合は2番目のフィールドを印刷します
root@localhost ~]# awk -F : '{if ($1=="root") print $1;else print $2}' /etc/passwd
root
x
x
x
x

awkの高度な使用法BEGINEND

awk '
BEGIN { actions }
/pattern/ { actions }
/pattern/ { actions }
……….
END { actions }
' filenames 
  • BEGINモード:awkが入力行を読み取る直前にBEGINで指定されたアクションを実行することを意味します。
  • ENDモード:awkが正式に終了する前にENDで指定されたアクションを実行することを意味します

おすすめ

転載: blog.csdn.net/Q274948451/article/details/108926674