シェルスクリプト(10):シェルツール

10.1カット

カットの仕事は「カット」することであり、具体的にはファイル内のデータをカットする役割を果たします。Cut コマンドは、ファイルの各行からバイト、文字、フィールドを切り取って出力します。

1. 基本的な使い方

Cut [オプションパラメータ] ファイル名

説明: デフォルトの区切り文字はタブです。

2. オプションパラメータの説明

表1-55

オプションパラメータ

関数

-f

列番号、どの列を抽出するか

-d

区切り文字、指定された区切り文字に従って列を分割します

3. 事例演習

(0) データの準備

[atguigu@hadoop101 データ]$ touch Cut.txt

[atguigu@hadoop101 データ]$ vim Cut.txt

ドンシェン

関鎮

ウォウォ

それでいいよ

(1)cut.txtの1列目を切り取る

[atguigu@hadoop101 データ]$ Cut -d " " -f 1 Cut.txt

ドン

(2)cut.txtの2列目と3列目を切り取る

[atguigu@hadoop101 データ]$ Cut -d " " -f 2,3 Cut.txt

シェン

ジェン

 を

 に

 の

(3)cut.txtファイル内のguanを切り出す

[atguigu@hadoop101 データ]$ cat Cut.txt | grep "グアン" | カット -d " " -f 1

(4) システム PATH 変数値を選択します。2 番目の「:」以降のすべてのパスが始まります。

[atguigu@hadoop101 データ]$ echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/bin

 

[atguigu@hadoop102 データ]$ echo $PATH | カット -d: -f 2-

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/bin

(5) ifconfig を切り取った後に出力される IP アドレス

[atguigu@hadoop101 データ]$ ifconfig eth0 | grep "inet アドレス" | カット -d: -f 2 | カット -d" " -f1

192.168.1.102

10.2セド

sed は、コンテンツを一度に 1 行ずつ処理するストリームエディタです。処理時には、現在処理中の行を「パターン空間」と呼ばれる一時的なバッファに格納し、そのバッファの内容をsedコマンドで処理し、処理完了後にバッファの内容を送信します。スクリーン。次に、次の行を処理し、ファイルの終わりまで繰り返します。リダイレクトされたストレージ出力を使用しない限り、ファイルの内容は変更されません

  1. 基本的な使い方

sed [オプション] 'コマンド' ファイル名

  1. オプションパラメータの説明

表1-56

オプションパラメータ

関数

-e

コマンドラインモードで sed アクションを直接編集します。

  1. コマンド機能説明

表1-57

注文

機能説明

ある

追加、 a の後に文字列を接続でき、次の行に表示されます

d

消去

s

見つけて置き換える 

  1. ケースプラクティス

(0) データの準備

[atguigu@hadoop102 データ]$ touch sed.txt

[atguigu@hadoop102 データ]$ vim sed.txt

ドンシェン

関鎮

ウォウォ

それでいいよ

 

(1) sed.txt の 2 行目に「mei nv」という単語を挿入して印刷します。

[atguigu@hadoop102 データ]$ シード '2nd mei nv' sed.txt

ドンシェン

関鎮

NV付き

ウォウォ

それでいいよ

 

[atguigu@hadoop102 データ]$ cat sed.txt

ドンシェン

関鎮

ウォウォ

それでいいよ

 

注: ファイルは変更されていません

(2) sed.txt ファイル内の wo を含む行をすべて削除します。

[atguigu@hadoop102 データ]$ sed '/wo/d' sed.txt

ドンシェン

関鎮

それでいいよ

 

(3) sed.txt ファイル内の wo を ni に置き換えます。

[atguigu@hadoop102 データ]$ sed 's/wo/ni/g' sed.txt

ドンシェン

関鎮

ni  ni

それでいいよ

 

注: 「g」はグローバルを意味し、すべてを置き換えます

(4) sed.txt ファイルの 2 行目を削除し、wo を ni に置き換えます。

[atguigu@hadoop102 データ]$ sed -e '2d' -e 's/wo/ni/g' sed.txt

ドンシェン

ni  ni

それでいいよ

 

10.3 awk

ファイルを 1 行ずつ読み取り、デフォルトの区切り文字としてスペースを使用して各行をスライスし、切り取られた部分を分析および処理する強力なテキスト分析ツールです。

  1. 基本的な使い方

awk [オプションパラメータ] 'パターン1{アクション1} パターン2{アクション2}...' ファイル名

pattern: AWK がデータ内で何を探しているかを示します。これは一致するパターンです。

action: 一致するものが見つかったときに実行する一連のコマンド

  1. オプションパラメータの説明

表1-55

オプションパラメータ

関数

-F

入力ファイルの折り目区切り文字を指定します

-v

ユーザー定義変数に値を代入する

  1. ケースプラクティス

(0) データの準備

[atguigu@hadoop102 データ]$ sudo cp /etc/passwd ./

(1) passwd ファイル内の root キーワードで始まるすべての行を検索し、その行の 7 桁目を出力します。

[atguigu@hadoop102 データ]$ awk -F: '/^root/{print $7}' passwd

/bin/bash

(2) passwd ファイル内の root キーワードで始まる行をすべて検索し、行の 1 列目と 7 列目を途中を「,」で区切って出力します。

[atguigu@hadoop102 データ]$ awk -F: '/^root/{print $1","$7}' passwd

ルート、/bin/bash

注:パターンに一致する行のみがアクションを実行します。

(3) /etc/passwd の 1 列目と 7 列目のみがカンマ区切りで表示され、すべての行の前に列名 user が追加され、シェルは最終行に「dahaige, /bin/zuishuai」を追加します。 。

[atguigu@hadoop102 data]$ awk -F : ' BEGIN {print "user,shell"} {print $1","$7} END {print "dahaige,/bin/zuishuai"}' passwd

ユーザー、シェル

ルート、/bin/bash

bin、/sbin/nologin

。。。

atguigu、/bin/bash

ダハイゲ、ビン、ズイシュアイ

注: BEGIN はすべてのデータが行を読み取られる前に実行され、ENDはすべてのデータが実行された後に実行されます。

(4) passwdファイル内のuser idを1つ増やして出力

[ atguigu@hadoop102 データ] $awk -vi=1 -F: '{print $3+i}' パスワード

1

2

3

4

  1. Awkの組み込み変数

表1-56

変数

説明する

ファイル名

ファイル名

NR

読み取られたレコードの数

NF

閲覧レコード内のドメイン数(切り取り後の列数)

  1. ケースプラクティス

(1) 統計パスワードファイル名、各行の行番号、各行の列数

[atguigu@hadoop102 データ]$ awk -F: '{print "ファイル名:" FILENAME "、行番号:" NR "、列:" NF}' passwd

ファイル名:passwd、行番号:1、列:7

ファイル名:passwd、行番号:2、列:7

ファイル名:passwd、行番号:3、列:7

         (2)IPのカット

[atguigu@hadoop102 データ]$ ifconfig eth0 | grep "inet アドレス" | awk -F: '{print $2}' | awk -F " " '{print $1}'

192.168.1.102

         (3) sed.txtの空行の行番号を問い合わせる

[atguigu@hadoop102 データ]$ awk '/^$/{print NR}' sed.txt

5

10.4ソート

Linux では sort コマンドは非常に便利で、ファイルをソートし、ソートされた結果を標準出力に出力します。

  1. 基本的な文法

ソート(オプション)(引数)

表1-57

オプション

説明する

-n

数値順に並べ替える

-r

逆順に並べ替える

-t

ソート時に使用する区切り文字を設定します

-k

ソートする列を指定します

パラメータ: ソートするファイルのリストを指定します。

2. ケーススタディ

(0) データの準備

[atguigu@hadoop102 データ]$ touch sort.sh

[atguigu@hadoop102 データ]$ vim sort.sh

bb:40:5.4

BD:20:4.2

xz:50:2.3

cls:10:3.5

ss:30:1.6

(1) 「:」で区切られた3列目を逆順にソートします。

[atguigu@hadoop102 データ]$ sort -t : -nrk 3 sort.sh

bb:40:5.4

BD:20:4.2

cls:10:3.5

xz:50:2.3

ss:30:1.6

おすすめ

転載: blog.csdn.net/Dove_Knowledge/article/details/99690784