sort、uniq、trコマンドおよびシェル正規表現
1. sortコマンド(ファイルの内容をソートします)
1.概要:ファイルの内容を行単位で、またはさまざまなデータ型に従って並べ替えます
2.フランス語形式:
sort [选项] 参数
cat file | sort 选项
3.一般的なオプション
- -f:大文字と小文字を無視します。デフォルトでは大文字が最初にソートされます
- -b:各行の前のスペースを無視します
- -n:番号で並べ替え
- -r:逆ソート
- -u:uniqと同等です。つまり、同じデータの1行のみが表示されます。
- -t:フィールド区切り文字を指定し、[tab]キーを使用してデフォルトで区切ります
- -k:ソートフィールドを指定します
- -o <出力ファイル>:ソートされた結果を指定されたファイルにダンプします
4.例
-u同じデータには1行しか表示されません
重複排除は、ソート後のソートを前提として実行されます。
-tは通常-kとともに使用されます
/ etc / passwdファイルの内容をuid(3番目のフィールド)の順序で配置します
sort -t ":" -k 3 /etc/passwd
duで使用
-b各行のスペースを無視する
2、uniqコマンド
==1。概要:ファイル内の連続する繰り返し行をレポートまたは無視するために使用されます。多くの場合、sortコマンドと組み合わせて使用されます==
2.構文形式:
uniq [选项] 参数
cat file | uniq 选项
3.一般的なオプション:
- -c:ファイル内の繰り返し行をカウントして削除します
- -d:連続する繰り返し行のみを表示します
- -u:一度だけ表示される行のみを表示します
パイプシンボルを引き続き使用します
3、trコマンド
1.概要:標準入力からの文字の置換、圧縮、および削除によく使用されます
構文形式:
tr [选项] 参数
2.一般的なオプション:
- -c:文字セット1の予約文字、その他の文字(改行を含む\ n)は文字セット2に置き換えられます
- -d:文字セット1に属するすべての文字を削除します
- -s:繰り返し文字列を文字列に圧縮し、文字セット1を文字セット2に置き換えます
- -t:文字セット2が文字セット1を置き換え、オプションなしの同じ結果
3.パラメータ:
文字セット1:
変換または削除する元の文字セットを指定します。変換操作を実行する場合は、パラメータ「文字セット2」を使用して変換操作を指定し、パラメータ「文字セット2」を使用して変換のターゲット文字セットを指定する必要があります。ただし、削除操作を実行する場合、パラメータ「文字セット2」は必要ありません。
文字セット2:
変換するターゲット文字セットを指定します
4.例
echo abc | tr 'a-z' 'A-Z'
echo abc | tr 'ac' 'AZ'
-cの使用
-d文字セット1を削除します
echo 'hello world' | tr -d 'od'
-s文字列を文字列に圧縮するか、文字セット1を1に圧縮して、文字セットを文字セット2に置き換えます。
echo "thissss is a text 1 innnnnnne." | tr -s 'sn'
echo "thissss is a text 1 innnnnnne." | tr -s 'sn' 'AB'
删除空行
echo -e "aa\n\n\n\n\nbb" | tr -s "\n"
cat testfile4| tr -s "\n"
把路径变量中的冒号":",替换成换行符"\n"实现每行输出
echo $PATH | tr -s ":" "\n"
以冒号分割
echo -e "aa\n\n\n\n\nbb" | tr -s "\n" ":"
Windowsファイル「Accordingto」の「^ M」文字を削除します
1.第一种方法
cat abc.txt | tr -s "\r" "\n" > new_file
或
cat abc.txt | tr -d "\r" > new_file
cat -v abc.txt
2.第二种方法
yum install -y dos2unix
dos2unix abc.txt
Linuxで改行文字( "\ n")が検出されると、キャリッジリターン+ラインフィード操作が実行されます。代わりに、キャリッジリターン文字は制御文字( "^ M")としてのみ表示され、キャリッジリターン操作が実行されます。発生しません。Windowsでは、キャリッジリターン+ラインフィード( "\ r \ n")のみをキャリッジリターン+ラインフィードに使用できます。制御文字がないか、順序が正しくない場合、新しい行を正しく開始できません。
配列の並べ替え
アルゴリズムがより複雑な場合は、並べ替えとtrをパイプシンボルと組み合わせて使用する方が簡単です。
arr=(3 5 6 2 1 7)
echo ${arr[@]} | tr " " "\n" | sort -n | tr "\n" " "
4、カットコマンド
1.カットの概要
行に指定された部分を表示し、ファイルの指定されたフィールドを削除します
。2。構文形式:
cut 选项参数
cat file | cut 选项
2.一般的なオプション
- -f:どのフィールドを指定して抽出します。cutコマンドは、デフォルトのフィールド区切り文字として「タブ」を使用します
- -d:「TAB」がデフォルトの区切り文字です。このオプションを使用して他の区切り文字に変更します
- -補完:このオプションは、指定されたフィールドを除外するために使用されます
- -出力-区切り文字:出力コンテンツの区切り文字を変更します
cut -d ':'-f 1 /etc/passwd
grep '/bin/bash' /etc/passwd | cut -d ':' -f 1-4,6,7 #以,分隔的开始字段和结束字段指定字段的范围(显示1-4字段和第6第7字段)
grep '/bin/bash' /etc/passwd | cut -d ':' --complement -f 2 #排除第二个字段
cut -d ':' -f1,7 --output-delimiter=' ' /etc/passwd #输出分隔符使用空格分隔
5つの正規表現
通常、文字列が特定の形式を満たしているかどうかを確認するための判断文で使用されます。
正規表現は、通常の文字とメタ文字で構成され
ます。通常の文字には、大文字と小文字、数字、句読点、その他の記号が含まれ
ます。メタ文字とは、正規表現の特別な意味。これを使用して、ターゲットオブジェクトの先頭文字(つまり、メタ文字の前の文字)の出現モードを指定できます。
1.基本的な正規表現の一般的なメタ文字(サポートされているツール: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-20-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}匹配时“{
}”前不用加“\”
2.拡張正規表現メタ文字(サポートされているツール: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
3.メールアドレスマッチングの例
ユーザー名には文字の先頭が必要で、中央に最大2つの記号を使用でき、記号の末尾は使用できません。ユーザー名の長さは6文字以上
@ sohu.com@qq
です。 com
@ 163.com
@ wo.cn
@ sina.com.cn
ユーザー名@子
ドメイン。トップレベルドメイントップレベルドメイン文字列の長さは、通常2〜5です。
egrep ^[a-zA-Z0-9]{
1,}[a-zA-Z0-9\.\-]{
4,}[a-zA-Z0-9]@[a-zA-Z0-9_\.\-]+\.([a-zA-Z]{
2,5})$
4.電話番号を選別します
egrep ^[1][3|5][0-9][ ]?[0-9]{
4}[ ]?[0-9]{
4}$ number.txt