シェルスクリプト三銃士(awkは、並べ替え、uniqのは)小さなデモの数が含まれています

awkのツール

Linux / UNIXシステムでは、awkは編集のための強力なツールである、入力されたテキストは、行ずつ読み取られ、出力フォーマットやコンテンツフィルタリング処理の要件を満たすために、指定されたパターンに応じてマッチングを見つけるために、もはや相互作用できませんかなり複雑なテキスト操作を実施する場合には、広く自動化された、さまざまな構成タスクを完了するために、シェルスクリプトで使用されています。

1.awk一般的な使用法:
以下に示すように、通常使用される構文AWK、前記単一引用符プラス括弧「{}」は操作のデータを処理するために設けられています。awkは、対象ファイルは、スクリプトを読んで「-f」によって処理することができ、目的のファイルを直接扱うことができます。

DEMO1:

次のコマンドを実行し、/ etc / passwdファイルのユーザー名やその他の列を見つけます

[root@localhost ~]# awk -F ':' '{print $1,$3,$4}' /etc/passwd
root 0 0
bin 1 1
daemon 2 2
//以下省略多行

次のようにawkは(直接使用することができる)組み込み変数いくつかの特殊が含まれています。

FS:指定每行文本的字段分隔符,默认为空格或制表位。
NF:当前处理的行的字段个数。
NR:当前处理的行的行号(序数)。
$0:当前处理的行的整行内容。
$n:当前处理行的第 n 个字段(第 n 列)。
FILENAME:被处理的文件名。
RS:数据记录分隔,默认为\n,即每行为一条记录。

行出力テキスト:

[root@localhost ~]# awk 'NR==1,NR==3{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@localhost ~]# awk -F ":" 'NR==1,NR==3{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2

[root@localhost ~]# awk -F ":" '(NR>=1)&&(NR<=3){print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
すべてのパリティ出力ラインの内容:
奇数行:
[root@localhost ~]# awk -F ":" 'NR%2==1{print $1,$3}' /etc/passwd
root 0
daemon 2
lp 4
shutdown 6
mail 8
games 12
nobody 99
dbus 81
abrt 173
rpc 32
saslauth 996
pulse 171
rpcuser 29
ntp 38
usbmuxd 113
qemu 107
setroubleshoot 993
gdm 42
sshd 74
postfix 89
zhou 1000
named 25
偶数行:
[root@localhost ~]# awk -F ":" 'NR%2==0{print $1,$3}' /etc/passwd
bin 1
adm 3
sync 5
halt 7
operator 11
ftp 14
systemd-network 192
polkitd 999
libstoragemgmt 998
colord 997
rtkit 172
chrony 995
nfsnobody 65534
tss 59
geoclue 994
radvd 75
sssd 992
gnome-initial-setup 991
avahi 70
tcpdump 72
dhcpd 177
ルートから始まる出力ライン:
[root@localhost ~]# awk '/^root/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
の終わりに/ binに/ bashのに行数を数えます:
[root@localhost ~]# awk 'BEGIN {x=0} ; /\/bin\/bash$/{x++};END {print x}' /etc/passwd
2
空白行で区切られたテキストの統計段落:
[root@localhost opt]# vim name.txt
zhangsan:lisi:wangwu
zhaoliu:liuliu
heiba:heihei
[root@localhost opt]# awk 'BEGIN{RS=":"};END{print NR}' /opt/name.txt
5
//统计规则:遇到关键符号,折行
出力フィールド:
[root@localhost opt]# awk -F ":" '$3=="0"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

[root@localhost opt]# awk -F ":" '$3=="0"{print $1,$7}' /etc/passwd
root /bin/bash

输出密码为空的用户的shadow记录:
[root@localhost opt]# awk 'BEGIN{FS=":"};$3=="0"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

输出以冒号分隔且第7个字段包含bash:
[root@localhost opt]# awk -F : '$7~"bash"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhou:x:1000:1000:zhou:/home/zhou:/bin/bash

以冒号为分隔,输出第一个字段包含nfs且总字段数为7的第1,3,7字段
方法一:[root@localhost opt]# awk -F : '($1~"nfs")&&(NF==7){print $1,$3,$7}' /etc/passwd
nfsnobody 65534 /sbin/nologin
方法二:[root@localhost opt]# awk 'BEGIN{FS=":"};($1~"nfs")&&(NF==7){print $1,$3,$7}' /etc/passwd
nfsnobody 65534 /sbin/nologin

以冒号为分隔,第七个字段不包含/sbin/nologin且总字段为7的,1,3,7字段
[root@localhost opt]# awk 'BEGIN{FS=":"};($7!="/sbin/nologin")&&(NF==7){print $1,$3,$7}' /etc/passwd
root 0 /bin/bash
sync 5 /bin/sync
shutdown 6 /sbin/shutdown
halt 7 /sbin/halt
zhou 1000 /bin/bash
named 25 /bin/false
トイレ-lコマンドは、通話者のbashの数をカウントします:
[root@localhost opt]# awk -F : '/bash$/{print | "wc -l"}' /etc/passwd
2
wコマンドを呼び出すと、オンラインユーザーの数をカウントするために使用:
[root@localhost opt]# awk 'BEGIN {while ("w" | getline) n++;{print n-2}}'
1
ホスト名、および出力電流のホスト名を呼び出します。
[root@localhost opt]# awk 'BEGIN {"hostname" | getline ; print $0}'
localhost.localdomain

並べ替えツール

Linuxシステムでツールを並べ替え、一般的に使用されるファイル、3がありますソートするファイルの内容の単位で並べ替えツールで並べ替え、uniqの、wcが、それはまた、さまざまなデータ・タイプに応じて並べ替えることができます。このようなデータと文字ボードと同じではありません。構文sortコマンドは、「並べ替え[オプション]パラメータ」一般的なオプションには以下のものを含む使用されている、です。

-f:ケースを無視

-b:各行の前にスペースを無視

-M:月で並べ替え

-n:ソート数値

-r:シーケンシングを逆転

-u:UNIQに相当する、単一のラインと同じデータを示します

-t:[Tab]キーのデフォルトのパーティションを使用して、区切り文字を指定します。

-o <出力ファイル>:ファイル指定されたダンプにソートされた結果

-k:ソート領域を指定します

uniqのツール

UNIQツールは、多くの場合、報告のために、Linuxシステムでのsortコマンドと一緒に使用したり、ファイルの重複を無視します。特定のコマンドの構文は次のとおりです。uniqの[オプション]パラメータ。これは、次の一般的なオプションがあります。

-c:カウント

-d:ショーは行だけを複製します

-u:ディスプレイは、行のみに一度表示されます

おすすめ

転載: blog.51cto.com/14464303/2440556