sort、uniq、trコマンド、およびシェルスクリプトの正規表現

並べ替えコマンド

ファイルの内容を行ごと、またはさまざまなデータ型に従って並べ替えます

構文形式:

sort [选项] 参数
cat file | sort 选项

一般的なオプション:

-f:大文字と小文字を区別しない、デフォルトでは大文字が
前にソートさます-b:各行の前のスペースを無視します
-n:数字でソートします
-r:逆ソート
-u:uniqと同じ、つまり同じデータを意味します表示されるのは1行のみ
-t:フィールド区切り文字を指定し、[Tab]キーを使用してデフォルトで区切ります
-k:並べ替えフィールドを指定します
-o <出力ファイル>:並べ替えた結果を指定したファイルに転送します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

7

uniqコマンド

ファイル内の連続する繰り返し行を報告または無視するために使用されます。多くの場合、sortコマンドと組み合わせて使用​​されます。

構文形式:

uniq [选项] 参数
cat file | uniq 选项

一般的なオプション:

-c:ファイル内の連続する繰り返し行をカウントして削除します。
-d:連続する繰り返し行のみを表示します。-u:
1回だけ表示される不連続行のみを表示します。

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

trコマンド

通常、標準入力から文字を置換、圧縮、および削除するために使用されます

構文形式:

tr [选项] [参数]

一般的なオプション:

-c:文字セット1の文字を予約し、他の文字(改行を含む\ n)を文字セット2に置き換えます。
-d:文字セット1に属するすべての文字を削除します-
s:繰り返される文字列を文字列に圧縮します。文字を使用します。文字セット1を置き換えるためのセット2-
t:文字セット1を置き換えるための文字セット2オプションなしの同じ結果

パラメータ:

  • 文字セット1:変換または削除する元の文字セットを指定します。変換操作を実行するときは、パラメータ「文字セット2」を使用して、変換の対象となる文字セットを指定する必要があります。ただし、削除操作を実行する場合は、パラメータ「文字セット2」は必要ありません。

  • 文字セット2:変換するターゲット文字セットを指定します。

    echo "xyz" | tr 'a-z' 'A-Z'
    echo "xyz" | tr -t 'a-z' 'A-Z'
    

ここに画像の説明を挿入します

echo -e "xyz\nxyzhxyz" | tr -c "xy\n" "1"

ここに画像の説明を挿入します

echo "gooooodhjjl" | tr -d "oj"
echo "gooooodhjjl" | tr -d 'oj'

ここに画像の説明を挿入します

echo "gooodeel haan" | tr -s 'oea'
echo "gooodeel haan" | tr -s 'oea' "123"

ここに画像の説明を挿入します

trコマンドとsortコマンドを使用して、配列を並べ替えることができます

ここに画像の説明を挿入します

正規表現

  • 正規表現は通常、文字列が特定の形式を満たしているかどうかを確認するために判断ステートメントで使用されます

  • 正規表現は、通常の文字とメタ文字で構成されます

  • 一般的な文字には、大文字と小文字、数字、句読点、その他の記号が含まれます

  • メタ文字とは、正規表現で特別な意味を持つ特殊文字を指し、ターゲットオブジェクトの先頭文字(メタ文字の前の文字)の出現モードを指定するために使用できます。

基本的な正規表現

サポートされているツール:grep、egrep、sed、awk

基本的な正規表現の一般的なメタ文字:

\ :转义字符,用于取消特殊符号的含义,例:\!、\n、\$等

^ :匹配字符串开始的位置,例:^a、^the、^#、^[a-z]

$ :匹配字符串结束的位置,例:word$、^$匹配空行

. :匹配除\n之外的任意的一个字符,例:go.d、g..d

* :匹配前面子表达式0次或者多次,例:goo*d、go.*d

[list] :匹配list列表中的一个字符,例:go[ola]d,[abc]、[a-z]、[a-z0-9]、[0-9]匹配任意一位数字

[^list] :匹配任意非list列表中的一个字符,例:[^0-9]、[^A-Z0-9]、[^a-z]匹配任意一位非小写字母

\{n\} :匹配前面的子表达式n次,例:go\{2\}d、'[0-9]\{2\}'匹配两位数字

\{n,\} :匹配前面的子表达式不少于n次,例:go\{2,\}d、'[0-9]\{2,\}'匹配两位及两位以上数字

\{n,m\} :匹配前面的子表达式n到m次,例:go\{2,3\}d、'[0-9]\{2,3\}'匹配两位到三位数字

注:egrep、awk使用{n}、{n,}、{n,m}匹配时“{}”前不用加“\”

ここに画像の説明を挿入します

拡張正規表現

サポートされているツール:egrep、awk
拡張正規表現メタ文字:

+ :匹配前面子表达式1次以上,例:go+d,将匹配至少一个o,如god、good、goood等

? :匹配前面子表达式0次或者1次,例:go?d,将匹配gd或god

() :将括号中的字符串作为一个整体,例1:g(oo)+d,将匹配oo整体1次以上,如good、gooood等

| :以或的方式匹配字条串,例:g(oo|la)d,将匹配good或者glad

例えば:

173で始まる携帯電話番号を一致させる

#以173开头,后面随机8位数字组合
"^173[0-9]{8}$"

egrep "^173[0-9]{8}$" shou.txt
grep "^173[0-9]\{8\}$" shou.txt 

ここに画像の説明を挿入します

一致する電子メールアドレス

用户名@ :^([a-zA-Z0-9_\-\.\+]+)@
子域名 :([a-zA-Z0-9_\-\.]+)
顶级域名(字符串长度一般在2到5) :\.([a-zA-Z]\{2,5\})$

egrep '^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$' you.sh
awk '/^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/{print $0}' you.sh

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/shengmodizu/article/details/114745686