此篇為學習過程中遇到的問題及解決方法,將不定期更新~~
如上述要求,可用
所支援的字串模式匹配來實現,一般格式是
[[變數
==模式
]]意為變數是否匹配到模式,是為真,否為假(切記,在
==兩邊留空格)。
[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 形式儲存所有輸入的命令列引數 以 ...