ボーエン構造
正規表現とは何か
基本的な正規表現は、
正規表現の拡張
書類の処理に関連したフォーマットを
.grep
正規表現は、文字を表現するために使用され、この「ルール列」、文字列操作の論理式であり、特定の事前定義された文字の組み合わせ、及びこれらの特定の文字を使用し、「文字列ルール」を形成することです文字列フィルタ・ロジックのため。
- システム管理者のための正規表現を使用します
、状況の下で、毎日生成されたメッセージの情報がより多くのあなたが想像できないポイントになり忙しく、および「エラーメッセージログファイル」システムはもちろん、システムによって生成されたメッセージの内容をすべて記録し、ことを私たちは皆知っているかのシステムため、これはあなたのシステムが「***」の記録データであるかどうかを含み
- 正規表現の広範な使用
処理文字列をプログラミングする場合、文字列に沿っていくつかの複雑なルールを見つける必要があることが多いです。正規表現のツールは、これらのルールを記述するために使用されます。言い換えれば、正規表現は、コードテキストのルールを記録することです。
-
正規表現との間でLinuxのシェル役割
システム管理部のための知識とシステムの両方 - 拡張正規表現
正規表現正規表現を拡張ベース:異なるストリンジェンシーに応じて正規表現文字列表現に分割されます。処理ストリングの単純な組に加えて、正規表現を拡張し、文字列を処理することができる基
- 基本的な正規表現
正規表現の言語の1インパクト
これら二つの言語zh_TW.big5およびCの出力は次の通りである:
場合LANG = C:0 1 2 3 4 ... ABCD ... Z ABCD ... Z
LANG =のzh_TW時:0 1 2 3 4 .. 。A BはB C D C D ... Z Z
2.正規表現は、3つの部分を持っています:
次のようにケースは以下のとおりです。
[root@localhost ~]# grep -n "the" /etc/man_db.conf
\\-n 显示行号 搜寻特定字符串
[root@localhost ~]# grep -vn 'the' /etc/man_db.conf
\\反转查找 意思就是查找不是‘the’的行显示出来
[root@localhost ~]# grep -in 'the' /etc/man_db.conf
\\取得不论大小写的 the 这个字串
[root@localhost ~]# grep -n 't[ae]se' /etc/man_db.conf
\\想要搜寻 test 或 tast 这两个单字时,可以发现到
[root@localhost ~]# grep -n '[^g]oo' /etc/man_db.conf
\\利用中括号【】来搜寻集合字符
\\^开头 $结束
[root@localhost ~]# grep -n '[0-9]' /etc/man_db.conf
\\取得有数字的那一行
[root@localhost ~]# grep -n '^the' /etc/man_db.conf
\\行首与行尾字符^ $
中括号内的^表示反向搜寻
中括号外的^表示以……开头
[root@localhost ~]# grep -n '^[a-z]' /etc/man_db.conf
\\查找开头为小写字母
[root@localhost ~]# grep -n '^[[:lower:]]' /etc/man_db.conf
\\这和上面一条一样都是显示小写字母,可以看上面那个图
[root@localhost ~]# grep -n '^[^a-zA-Z]' /etc/man_db.conf
\\不想要开头是英文字母
[root@localhost ~]# grep -n '\.$' /etc/man_db.conf
\\找出来,行尾结束为小数点(.)的那一行
その特別な意味から排出されるようにエスケープ文字(\)を使用する必要があるため、小数点が他の意味を持っていることを特に注意
Windowsの改行文字。(。^ M $)
Linuxの改行文字。(。$)
**(小数)は:手段「任意の文字がなければならない」の略。
*(星の数):フォームの組み合わせのために、「無限に繰り返し、0を文字を繰り返す前に、」手段の略です
**
[root@localhost ~]# grep -n 'g..d' /etc/man_db.conf
\\查找g??d共有四个字符开头为g,结尾为d
[root@localhost ~]# grep -n 'ooo*' /etc/man_db.conf
\\查找至少两个 o 以上的字串
\\注意,o*为一个单位,*代表重复前面的字母无限次
[root@localhost ~]# grep -n 'goo*g' /etc/man_db.conf
\\字串开头与结尾都是 g,但是两个 g 之间仅能存在至少一个 o
[root@localhost ~]# grep -n '[]0-9[0-9]*' /etc/man_db.conf
\\找出“任意数字”的行列
[root@localhost ~]# grep -n 'go\{2,5\}g' /etc/man_db.conf
\\找出 g 后面接 2 到 5 个 o ,然后再接一个 g 的字串
[root@localhost ~]# grep -n 'go\{2,\}g' /etc/man_db.conf
\\找出2 个 o 以上的 goooo....g
注:一般的なコマンドライン命令「ワイルドカード」の「正規表現の特殊文字」は、同じではない、例えば、ワイルドカードの間で「文字の無限複数0」を表す手段が、正規表現の中で、それは手段「前のREの文字の繰り返し数が無限に0」である-ない同じ感覚、混在させないでください
二.sed
语法如下:
[root@localhost ~]# ]sed [-nefr] [动作 ]
选项与参数如下:
-n :使用安静(silent)模式。在一般sed的用法中,所有来自STDIN 的数据一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令行界面上进行sed的动作编辑;
-f :直接将sed的动作写在一一个文件内, -f filename 则可以执行filename 内的sed动作;
-r:sed的动作支持的是延伸型正则表达式的语法。(默认是基础正则表达式语法)
-i:直接修改读取的文件内容,而不是由屏幕输出。
ケース:
[root@localhost ~]# nl /etc/passwd | sed '2,5'd
\\删除2到5行内容
[root@localhost ~]# nl /etc/passwd | sed 'asd'
\\在所有后面行加上asd
[root@localhost ~]# nl /etc/passwd | sed '2a da ....\
aaa'
\\增将两行以上
[root@localhost ~]# nl /etc/passwd | sed '2,5c ccccccccccccc'
\\第2-5行的内容取代成为ccccccccc
[root@localhost ~]# nl /etc/passwd | sed -n '5,7p'
\\仅列出5到7行的内容
データ検索の一部と置換機能
SEDさん/置換される文字列/新しい文字列/ G '
直接ファイルの内容を変更するために「-i」オプションでわかるsed、
- 拡張正規表現
三.AWK
awkはそのデータ分析とレポート生成にはgrepの相、sedの編集者、AWKを見つけるための強力なツールです、特に強いです。AWKは単に、デフォルトの区切りスペースとして、各種評価をスライス、カット部の各行を行毎にファイルを読み取ることです。
语法如下:
[root@localhost ~]# awk '条 件类型1{动作1}条件类型2{动作2} .. ' filenamne
[root@localhost ~]# last -n 5 | awk '{print $1 "\t" $3}'
\\取出帐号与登陆者的 IP ,且帐号与 IP 之间以 [tab] 隔开
** awkのプロセス全体の流れは以下のとおりです。
- 最初の行は、最初の行のデータは、他の変数のうち$ 0、$ 1、$ 2 ....充填され、読み出されます。
- 「アクション」の後の決意の必要性を制限する「条件タイプ」に基づい。
- タイプのすべてのアクションと条件を行います。
- データの「ライン」、後続がある場合は、すべてのデータがこれまでに読み取られるまで、繰り返しは、上記1〜3を繰り返します。
**
[root@localhost ~]# last -n 5 | awk '{print $1 "\t lines: "NR"\t columns: "NF}'
root lines: 1 columns: 10
root lines: 2 columns: 10
(unknown lines: 3 columns: 10
reboot lines: 4 columns: 11
root lines: 5 columns: 10
lines: 6 columns: 0
wtmp lines: 7 columns: 7
[root@localhost ~]#
\\在awk内的NR,NF等变量要用大写,且不需要$!
- awkの論理演算文字
- 以下に等しい、より、より上記論理演算、すなわちいわゆる大きくをなど上記式が示されている「==」慣習に基づいて、決定されます。
- 値は、例えば、変数の設定、直接指定された場合、唯一の直接使用は、=。