shell程式設計

2021-07-15 19:48:08 字數 2709 閱讀 7563

此篇為學習過程中遇到的問題及解決方法,將不定期更新~~

如上述要求,可用

所支援的字串模式匹配來實現,一般格式是

[[變數

==模式

]]意為變數是否匹配到模式,是為真,否為假(切記,在

==兩邊留空格)。

[root@server24 shell]# test=apiabcdef

[root@server24 shell]# [[ "$test" == api* ]] && echo ok! || echo faild!

ok![root@server24 shell]# test=apbabcdef

[root@server24 shell]# [[ "$test" == api* ]] && echo ok! || echo faild!

faild!

egrep = grep -e

在文字中多條件匹配一般可以用egrep 『a|b』 file,但是這種方法並不能精確匹配到字串

ab同時出現在某一行,如果需要字串同時匹配可用萬用字元

:grep -e 『a.*b|b.*a』 file 。 如果次序固定,那麼就簡單多了,直接用

grep『a.*b』 file就可。

如上圖需求,次序是固定的,那麼用起來就似乎容易多了

grep -e -a5 'req|2016-07-28 17:|868029020330692' /tmp/11.log 

1.現有hosts檔案如下:

1.1.1.1 hp-1

1.1.1.2 hp-2

1.1.10.1 hp-003

1.1.10.2 hp-004

1.1.1.10 dell-001

1.1.1.11 dell-002

1.1.1.20 ibm-003

1.1.1.30 ibm-004

2.2.10.1 hp-005

2.2.10.2 hp-006

2.2.10.100  dell-010

3.3.3.200 ibm-005

要求1)實現效果如下:

1.1.1.1 hp-1hp-000

1.1.1.2 hp-2hp-001

1.1.10.1 hp-003hp-002

1.1.10.2 hp-004hp-003

1.1.1.10 dell-001dell-004

1.1.1.11 dell-002dell-005

1.1.1.20 ibm-003ibm-006

1.1.1.30 ibm-004ibm-007

2.2.10.1 hp-005hp-008

2.2.10.2 hp-006hp-009

2.2.10.100  dell-010dell-010

3.3.3.200 ibm-005ibm-011

要求2)實現效果如下:

1.1.1.1 hp-1hp-129

1.1.1.2 hp-2hp-130

1.1.10.1 hp-003hp-131

1.1.10.2 hp-004hp-132

1.1.1.10 dell-001dell-129

1.1.1.11 dell-002dell-130

1.1.1.20 ibm-003ibm-131

1.1.1.30 ibm-004ibm-132

2.2.10.1 hp-005hp-133

2.2.10.2 hp-006hp-134

2.2.10.100  dell-010dell-138

3.3.3.200 ibm-005ibm-133

針對要求1)要求2)的思路是將其分為ip、hostname兩塊,然後將hostname以'-'為分隔符拆分為兩部分,然後重組。可以發現在要求1)裡面number是從000開始的,要求2)裡number是+128。所以實現如下:

1)awk ''  hosts

2)awk '' hosts

2.將如下字串 

stu494

e222f

stu495

bedf3

stu496

92236

stu497

49b91

轉為如下格式

stu494=e222f

stu495=bedf3

stu496=92236

stu497=49b91

實現如下:

[root@server23 ~]# cat 3.log |awk 'print a"="$0}'

stu494=e222f

stu495=bedf3

stu496=92236

stu497=49b91

3.將/etc/passwd中每個字元的個數,將字元數量前10按個數排序

[root@server23 ~]# cat /etc/passwd | awk -v fs="" 'end'|sort -nr |head

150 :

98 /

85 n

78 o

60 s

60 i

52 a

41 l

39 e

38 b

Shell程式設計 shell特性

linux會預設記錄1000條歷史記錄,可通過 echo histsize 檢視,如果講histsize更改為2000,那麼會預設儲存2000條。1000條記錄儲存在家目錄的 bash history 中,僅當使用者正常退出當前shell時,當前shell中執行的命令才會儲存到 bash histo...

Shell程式設計 Shell函式

shell函式 1.將命令序列按格寫在一起 2.可方便重複使用命令序列 3.shell函式定義 function 函式名 4.呼叫函式的方法 函式名 引數1 引數2 5.shell函式應用示例 1 兩個數字求和 要求 通過sum 定義函式 兩個數求和 方法一 root localhost vim d...

Shell程式設計

1 建立指令碼 vi emacs等即可 bin sh 2 shell變數 對shell來講,所有的變數的取值都是乙個字串 shell是一種解釋性語言,變數無需事先定義 shell中的系統變數 程式命令列引數的數目 儲存前乙個命令的返回值 0 當前程式名 以 1 2 形式儲存所有輸入的命令列引數 以 ...