Dieses Mal erkläre ich Ihnen ausführlich die Verwendung der drei wichtigsten Textverarbeitungstools für reguläre Ausdrücke und Linux. Was sind die Vorsichtsmaßnahmen bei der Verwendung der drei wichtigsten Textverarbeitungstools für reguläre Ausdrücke und Das Folgende ist ein praktischer Fall. Schauen wir uns das einmal an.
grep, sed und awk sind allesamt Textverarbeitungswerkzeuge, sie haben jedoch alle ihre eigenen Vor- und Nachteile. Ein Textverarbeitungsbefehl kann nicht vollständig durch einen anderen ersetzt werden, sonst wird er nicht verwendet Textverarbeitungsbefehle werden angezeigt.
1 🎜>[a-z]: Kleinbuchstaben
[A-Z]: Großbuchstaben [a-Z]: Klein- oder Großbuchstaben [0-9]: Zahlen[a-zA-Z0-9]: Entspricht einem Zeichen, das ein Buchstabe oder eine Zahl ist. .: Entspricht jedem Zeichen außer Leerzeichen. [0-f]: Hexadezimalzahl abc |. def: abc oder def
a (bc | de) f: abcf oder adef
<: Dem ersten Wort eines Wortes steht normalerweise ein Leerzeichen oder
Sonderzeichen
Zeichenfolgen werden als Wörter behandelt >: Wortede
[^Ausdruck]: außer Kleinbuchstaben alle Charaktere usw.2. Gefolgt von den folgenden Symbolen zur Steuerung der Anzahl der Übereinstimmungen
Die linke Seite solcher Symbole muss den Ausdruck des ersten Punktes oben haben
Ausdruck *: 0 oder n Zeichen Ausdruck +: 1 oder n Zeichen Ausdruck?: 0 oder 1 Zeichen Ausdruck {n}: n Zeichen Ausdruck {n:m}: n bis m Zeichen Ausdruck {n,}: mindestens n Zeichen [Beispiel] [a-z] * bedeutet Übereinstimmung mit 0 oder mehr Kleinbuchstaben Buchstaben 3. Kontrollieren Sie die passenden Zeichen für Kopf und Ende^ Ausdruck: Der Kopf passt zu
Ausdruck $: Der Schwanz passt zu
1. Egrep-Filtertool
Erweiterung der Grep-Version, Sie können reguläre Ausdrücke verwenden
Syntax: egrep -option 'Regulärer Ausdruck' Dateiname Optionen: -n: Zeilennummer anzeigen.-o: Nur Übereinstimmenden Inhalt anzeigen
-q: Stiller Modus, keine Ausgabe, Sie müssen $? verwenden, um festzustellen, ob die Ausführung erfolgreich ist, d. h. ob der gewünschte Inhalt gefiltert wird-l: Wenn die Übereinstimmung erfolgreich ist, Wenn dies fehlschlägt, wird normalerweise nicht -rl 'root' /etc
-A verwendet: Wenn die Übereinstimmung erfolgreich ist, werden die entsprechenden Zeilen angezeigt Die folgenden n Zeilen werden zusammen gedruckt
-B: Wenn die Übereinstimmung erfolgreich ist, drucken Sie die übereinstimmende Zeile und die n Zeilen davor und danach zusammen aus
-C: Wenn die Übereinstimmung erfolgreich ist, drucken Sie die Übereinstimmung aus Zeile und die n Zeilen davor und danach zusammen
--color
-c: Wenn die Übereinstimmung erfolgreich ist, geben Sie die Anzahl der übereinstimmenden Zeilen aus
-i: Groß-/Kleinschreibung ignorieren
-v: Negieren , nicht übereinstimmen
-w: Wörter abgleichen
2. sed stream
-e: mehrere Bearbeitungen, das ist nicht ganz klar
-i: Dateiinhalt direkt ändern und nicht ausgeben-r: Erweiterter Modus, Sie können reguläre Ausdrücke verwenden
-f: Geben Sie den Dateinamen an und schreiben Sie die Aktion in eine neue Datei
Befehl:
c ∶ Ändern,
d ∶ Löschen,i ∶ Einfügen, auf i können Zeichenfolgen folgen, und diese Zeichenfolgen werden in einer neuen angezeigt Zeile (die aktuelle vorherige Zeile)
p∶ print print
s∶ Anstatt zu ersetzen, können Sie die Ersetzungsarbeit direkt ausführen. Normalerweise kann diese Aktion mit einem regulären Ausdruck gepaart werden. Zum Beispiel 1,20s/old/new/g
*s spezielle Befehlsanweisungen:
语法2:sed -r '替换命令s/正则表达式/替换内容/贪婪选项g' 文件名
定位的两种方法:
①数字定位(输入行序号定位)
十进制数
1:单行
1,3:范围 从第一行到第三行
2,+4:匹配行后若干行
4,~3:从第四行到下一个3的倍数行
2~3:第二行起每间隔三行的行
$:尾行
1!:除了第一行以外的行
【例】sed -n '1p' /etc/passwd
②正则表达式定位
正则必须用//包裹起来
扩展正则需要用 -r 参数或转义
替换可使用正则表达式的子模式,即小括号(),可以\1、\2代表子模式
【例】sed -r 's/(.)(.)/\2\1/ file1 表示将匹配到的第一部分和第二部分替换
*贪婪选项:填上g,代表把一行中所有匹配项替换
3、awk 文本分析工具
由命令、正则(需要用//包围起来)、比较和关系运算组合而成
使用option中的-F参数定义间隔符号
用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域,NF变量表示当前记录的字段数
语法
awk -选项 参数 '逻辑判断{命令 变量1,变量2,变量3}' 文件名
选项
-F 定义字段分隔符,默认的分隔符是连续的空格或制表符
-v 定义变量并赋值 也可以借用次方式从shell变量中引入
AWK变量
NR 当前记录的个数(全部文件连接后的统计)
FNR 当前记录的个数(仅为当前文件的统计,非全部)
FS 字段分隔符 默认为连续空格或制表符,可以使用多个不同的符号做分隔符 -F[:/]
OFS 输出字符的分隔符 默认是空格
# awk -F: 'OFS="=====" {print $1,$2}' /etc/passwd
root=====x
NF 当前读入行的字段个数
ORS 输出记录分隔符 默认是换行
# awk -F: 'ORS="=====" {print $1,$2}' /etc/passwd
root x=====bin x=====
FILENAME 当前文件名
【例1】使用AWK变量
# awk '{print NR,FNR,$1}' file1 file2 1 1 aaaaa 2 2 bbbbb 3 3 ccccc 4 1 dddddd 5 2 eeeeee 6 3 ffffff #
【例2】引用shell变量的方法
# a=root # awk -v var=$a -F: '$1 == var {print $0}' /etc/passwd 或者 把整个命令拆开传递,让shell变量外露, # awk -F: '$1 == "'$a'" {print $0}' /etc/passwd # a=NF # awk -F: '{print $'$a'}' /etc/passwd
逻辑运算(可直接引用域进行运算)
= += -= /= *= 赋值
&& || ! 逻辑与 逻辑或 逻辑非
~ !~ 匹配正则或不匹配,正则需要用 /正则/ 包围住
< <= > >= != == 关系 比较字符串时要把字符串用双引号引起来
$ 字段引用:字段引用需要加$,而变量引用直接用变量名取
+ - * / % ++ -- 运算符
转义序列
\\ \自身
\$ 转义$
\t 制表符
\b 退格符
\r 回车符
\n 换行符
\c 取消换行
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Regex und den drei wichtigsten Textverarbeitungstools von Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!