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コマンドで処理し、処理完了後にバッファの内容を送信します。スクリーン。次に、次の行を処理し、ファイルの終わりまで繰り返します。リダイレクトされたストレージ出力を使用しない限り、ファイルの内容は変更されません。
- 基本的な使い方
sed [オプション] 'コマンド' ファイル名
- オプションパラメータの説明
表1-56
オプションパラメータ |
関数 |
-e |
コマンドラインモードで sed アクションを直接編集します。 |
- コマンド機能説明
表1-57
注文 |
機能説明 |
ある |
追加、 a の後に文字列を接続でき、次の行に表示されます |
d |
消去 |
s |
見つけて置き換える |
- ケースプラクティス
(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 行ずつ読み取り、デフォルトの区切り文字としてスペースを使用して各行をスライスし、切り取られた部分を分析および処理する強力なテキスト分析ツールです。
- 基本的な使い方
awk [オプションパラメータ] 'パターン1{アクション1} パターン2{アクション2}...' ファイル名
pattern: AWK がデータ内で何を探しているかを示します。これは一致するパターンです。
action: 一致するものが見つかったときに実行する一連のコマンド
- オプションパラメータの説明
表1-55
オプションパラメータ |
関数 |
-F |
入力ファイルの折り目区切り文字を指定します |
-v |
ユーザー定義変数に値を代入する |
- ケースプラクティス
(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
- Awkの組み込み変数
表1-56
変数 |
説明する |
ファイル名 |
ファイル名 |
NR |
読み取られたレコードの数 |
NF |
閲覧レコード内のドメイン数(切り取り後の列数) |
- ケースプラクティス
(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-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