シェル - 正規表現、grep、sed、awk の使用

目次

1. 正規表現

次に、grep の使用

3. Sed ストリーム エディター (一般的に使用され、テキストを置き換えます)

1、sed -i 's/#rm -f \/a\/b/rm -f \/a\/b/g' hello/file

2、 sed -i の/^bind-address.*/bind-address = 0.0.0.0/' $MYSQL_CONF_FILE

3、 Sed -r 's/root/ROOT/gi/' /etc/passwd  

4. エスケープ文字

4 番目に、awk の使用 (出力列用)

1. 正規表現

ls TXT

現在のディレクトリ内の .txt で終わるファイルと一致します

*

grep 'a * ' file.txt

ファイル内で文字 a が連続して出現するすべての文字と一致します。

+

grep 'b a+ ' file.txt

b の後に 1 つ以上の a が続く構成ファイル内のすべての文字列。

?

grep 'コロウ? r'ファイル.txt

ファイル内の色または色を含む文字列と一致します。

[ ]

grep ' [クレジット] ' file.txt

ファイル内の任意の母音を含む任意の文字列と一致します

[^]

'grep ' [^ 0-9 ] ' file.txt

ファイル内の数字を含まない行に一致します

-

grep '[a - z]' file.txt

ファイル内の小文字を含む文字列と一致します

\b

grep ' \b word \b ' file.txt

ファイル内の個々の単語と一致します

^

grep ' ^ start' file.txt

ファイル内の start で始まる行と一致します。

$

grep 'end $ ' file.txt

ファイル内の end で終わる行と一致します。

次に、  grep の使用

cat test.txt |grep ^u

test.txt の u で始まる行の内容を調べます。

cat test.txt |grep ^[^u]

test.txt 内のu で始まらない行の内容を調べます。

猫 /etc/passwd | grep -n ルート

/etc/passwd を取り出し、root が表示されている行を取り出し、(-n) で行番号を表示します。

psから| トイレ-L

プロセス数を表示する

grep "wl" 1.txt 2.txt 3.txt

1.txt、2.txt、3.txt で wl を検索

grep -r  "wl" パス/inc

path/inc で wl を再帰的に検索します

grep "wl" パス/*.txt

パス ディレクトリ内のすべての txt、wl を検索

3. sed ストリーム エディタ (通常はテキストの置換に使用されます)

1、sed -i 's/#rm -f \/a\/b/rm -f \/a\/b/g' hello/file

-i: 元のファイルを直接編集します

s は置換操作の開始を示します

g はグローバル置換を意味します (g がない場合、複数の行が表示され、1 行に複数の出現がある場合、各行の最初の行のみが置換されます)

#rm -f \/a\/b/置換されるパターンは #rm -f /a/b のテキストです

rm -f \/a\/b/ は置換されたパターンであり、rm -f /a/b のテキストです。

hello/file 内の #rm -f /a/b を rm -f /a/b に置き換えることを示します

2、 sed -i の/^bind-address.*/bind-address = 0.0.0.0/' $MYSQL_CONF_FILE

 ^bind-address.*: 「bind-address」で始まる行と一致します。

binding-address = 0.0.0.0: 一致する動作「bind-address = 0.0.0.0」を置き換えます。

3、 Sed -r 's/root/ROOT/gi/' /etc/passwd  

etc/passwd ディレクトリ内のすべてのファイル (-r) について、テキスト (i) 内のすべての (g) ルートを ROOT に置き換えます。

4. エスケープ文字

-r '\crootcd' パスワードを参照してください。

Sed -r '\#root#d' passwd (\ はエスケープ文字として、# を通常の文字として扱うように sed に指示します)

passwd のルートを削除すると、2 つの # は任意の文字に置き換えることができます

4 番目に、awk の使用 (出力列用)

awk '{print $2}' file.txt

file.txt の 2 番目の列を出力します。

awk -F':' '{print $1, $NF}' /etc/passwd

: を区切り文字として使用し、最初と最後の列を出力します。

awk -va=1 '{print $1,$1+a}' log.txt

-va=1、変数 a を指定し、値 1 を割り当て、最初の列と 2 番目の列の内容を出力します。

おすすめ

転載: blog.csdn.net/weixin_45981798/article/details/131843050