鏡像下載、域名解析、時間同步請點擊 [阿里云開源鏡像站](https://links.jianshu.com/go?to=https%3A%2F%2Fdeveloper.aliyun.com%2Fmirror%2F%3Futm_content%3Dg_1000303593)
## 準備
作為一個經常在服務器上游走的后端,需要熟悉不少命令行操作。其中,grep、sed、awk號稱"linux三劍客",使用頻繁,功能強大,本文通過一個實例演示下基本用法。首先準備一個文本文件,命名為text.txt,內容如下:
~~~undefined
cat text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
## grep
首先,最簡單的是grep。經常用來過濾查看日志。對于grep需要知道如下幾個常用的命令選項:
### \-n
額外輸出行號。例如過濾出每一行包含"青"的記錄:
~~~bash
grep -n "青" text.txt
1:1 province 省份 青海省
3:3 subject_no 主體備案號 青ICP備11000289號
4:4 addr 注冊地址 青海省西寧市城中區南關街138號
7:7 site_no 網站備案/許可證號 青ICP備11000289號-2
~~~
### \-v
排除匹配的行。例如排除包含"青"的行記錄:
~~~bash
grep -v '青' text.txt
2 domain 域名或者ip tianfengyinlou.cn
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
### \-E
支持擴展正則匹配。grep的時候,我們可以按照正則表達式來進行匹配,但在需要擴展正則匹配時,要通過-E指定才能生效。常見的或操作,比如篩選包含"青海省"或者"青ICP"的行記錄,不指定-E是無法獲得想要的結果的。
~~~bash
grep -E '青海省|青ICP' text.txt
1 province 省份 青海省
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
7 site_no 網站備案/許可證號 青ICP備11000289號-2
~~~
### \-l
只輸出有匹配行的文件名。有時候,我們并不需要輸出匹配的行記錄,僅僅只是需要知道匹配到了行記錄的文件名:
~~~css
grep -l 青 text.txt
text.txt
~~~
### \-R
遞歸匹配目錄中的文件內容。有時候,在一個目錄中我們并不知道哪個文件內容包含我們想要的結果,此時,可以查找整個目錄,輸出匹配的文件名以及行記錄:
~~~bash
grep -R 青海 ./DevMisc
# ...
./DevMisc/linux三劍客.md:1 province 省份 青海省
./DevMisc/linux三劍客.md:4 addr 注冊地址 青海省西寧市城中區南關街138號
./DevMisc/text.txt:1 province 省份 青海省
./DevMisc/text.txt:4 addr 注冊地址 青海省西寧市城中區南關街138號
~~~
結合-l參數就可以知道一個目錄中有哪些文件包含了匹配項:
~~~undefined
grep -Rl 青 ./DevMisc
./DevMisc/linux三劍客.md
./DevMisc/text.txt
~~~
### \-A
通過-A(after)指定輸出匹配行后的額外行數。例如,想要額外輸出包含"青"的行記錄后一行,可以指定-A1:
~~~undefined
grep -A1 青 text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
--
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
--
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
~~~
### \-B
通過-B(before)指定輸出匹配行前的額外行數。例如,想要額外輸出包含"青"的行記錄前一行,可以指定-B1:
~~~undefined
grep -B1 青 text.txt
1 province 省份 青海省
--
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
--
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
~~~
### \-C
通過-C指定輸出匹配行前后的額外行數。例如,想要額外輸出包含"青"的行記錄前后各一行,可以指定-C1:
~~~undefined
grep -C1 青 text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
--
--
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
--
--
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
~~~
## sed
### 查找
sed的各項操作需要指定一個特定的動作。查找需要指定一個動作為p(print),例如,打印出第三行的記錄,需要指定行號加動作3p:
~~~css
sed -n 3p text.txt
3 subject_no 主體備案號 青ICP備11000289號
~~~
這里必須指定一個選項-n。因為sed的默認行為是遍歷文本文件的每一行并輸出每一行,假如不帶-n選項,第三行會輸出兩次=默認輸出一次+命令行指定輸出一次:
~~~undefined
sed 3p text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
所以-n的作用是取消sed的默認輸出行為, 一般都只與p組合使用。利用sed的默認輸出行為,我們可以模擬復制每一行的操作,有時候在特定場景下非常有用:
~~~undefined
sed p text.txt
1 province 省份 青海省
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
sed不僅可以輸出指定的某一行,還可以按行號范圍進行輸出,例如輸出1-5行:
~~~css
sed -n 1,5p text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
~~~
sed還可以按照正則匹配來輸出特定的行。格式為/xx/p, 例如,查找包含"青海省"的行記錄:
~~~bash
sed -n '/青海省/p' text.txt
1 province 省份 青海省
4 addr 注冊地址 青海省西寧市城中區南關街138號
~~~
查找包含數字0到6的行記錄:
~~~bash
sed -n '/[0-6]/p' text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
~~~
查找以0結尾的行記錄:
~~~bash
sed -n '/0$/p' text.txt
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
~~~
如果想要支持擴展正則匹配,需要通過-r來指定,例如查找每一行包含"青海省"或者"青"的記錄:
~~~bash
sed -nr '/青海省|青/p' text.txt
1 province 省份 青海省
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
7 site_no 網站備案/許可證號 青ICP備11000289號-2
~~~
sed正則匹配也支持按范圍輸出,格式為/xx/,/xx/p。例如查找包含"domain"的行到包含"addr"的行記錄:
~~~bash
sed -n '/domain/,/addr/p' text.txt
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
~~~
### 刪除
~~~ruby
# 刪除第三行
sed 3d text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
# 刪除包含青的行
sed '/青/d' text.txt
2 domain 域名或者ip tianfengyinlou.cn
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
# 更改text.txt
cat text.txt ysj@yangsj2-knownsec
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
#5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
#6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
# 刪除空行和注釋行
sed -r '/^$|#/d' text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
### 增加
sed的增加動作有三種:
* i:在指定行的上方增加一行
* a: 在指定行的下方增加一行
* c: 在指定行的地方增加一行,原有行會被覆蓋
上述三種增加行為示例為:
注意:示例的增加行為在mac上會報錯,可能在mac上用法不一致。
~~~bash
# 在第3行上方增加一行記錄
sed '3i insert oneline above 3rd line' text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
insert oneline above 3rd line
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
# 在第3行下方增加一行記錄
sed '3a insert oneline after 3rd line' text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
insert oneline after 3rd line
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
# 在第3行創建一行記錄,原記錄被替換
sed '3c create oneline at 3rd line' text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
create oneline at 3rd line
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
### 修改
上述所有的操作輸出均沒有改變文件自身的內容。想要使得操作改變文件自身的內容,需要指定選項-i。指定-i的操作需要格外小心。
例如,在文件中第一行插入一行記錄:
~~~csharp
sed -i '1i add oneline above first line' text.txt
cat text.txt
add oneline above first line
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
sed的刪除動作為d(delete),例如刪除文件中的第一行:
~~~bash
# 刪除增加的第一行
sed -i 1d text.txt
cat text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
當然,我們也有辦法做安全的刪除操作,即將-i換成-i.bak 可以在真實改動文件內容前,備份文件。但是這個操作一般不適合應用在大文件上,因為備份很慢。
~~~bash
# 刪除第一行并備份
sed -i.bak 1d text.txt
cat text.txt
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
cat text.txt.bak
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
### 替換
sed可以對文件內容進行替換(substitute),格式為使用任意三個相同的符號,如三個斜線s/xx/yy/g、三個#號s#xx#yy#g、三個@符號s@xx@yy@g等,效果是將xx替換為yy。
這里的符號選擇是任意的,可以是三個1,三個2都行。常用的是上述三種,因為和文件內容重合度最小,具體使用哪種,需要根據文件內容選擇。如果文件內容本身包含了/,則不方便使用三個斜線來操作。
~~~bash
# 將"青" 替換為"蜀"
sed 's/青/蜀/g' text.txt
1 province 省份 蜀海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 蜀ICP備11000289號
4 addr 注冊地址 蜀海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 蜀ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
# 將第三行的青替換為蜀
sed '3s/青/蜀/g' text.txt
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 蜀ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
# 把所有數字替換為x
sed -r 's/[0-9]/x/g' text.txt
x province 省份 青海省
x domain 域名或者ip tianfengyinlou.cn
x subject_no 主體備案號 青ICP備xxxxxxxx號
x addr 注冊地址 青海省西寧市城中區南關街xxx號
x check_time 備案時間, 時間對象 xxxx-xx-xx xx:xx:xx
x update_time 更新時間, 毫秒級時間戳 xxxxxxxxxxxxx
x site_no 網站備案/許可證號 青ICP備xxxxxxxx號-x
x site_url 站點/網站首頁網址 www.tianfengyinlou.cn
x comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
g是全局(gloabal)替換的意思,如果不要g,則只會替換匹配到的第一項:
~~~bash
# 把每一行的第一個數字替換為x
sed -r 's/[0-9]/x/' text.txt
x province 省份 青海省
x domain 域名或者ip tianfengyinlou.cn
x subject_no 主體備案號 青ICP備11000289號
x addr 注冊地址 青海省西寧市城中區南關街138號
x check_time 備案時間, 時間對象 2011-06-23 16:38:00
x update_time 更新時間, 毫秒級時間戳 1607414120745
x site_no 網站備案/許可證號 青ICP備11000289號-2
x site_url 站點/網站首頁網址 www.tianfengyinlou.cn
x comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
### 反向引用
反向引用就是利用正則的組匹配來以組為單位進行替換。
~~~xml
# 例如匹配所有的英文詞句([a-z_.]+),然后把他們用<>括起來, \1表示第一組,這里只有一個組匹配
sed -r 's/([a-z_.]+)/<\1>/g' text.txt
1 <province> 省份 青海省
2 <domain> 域名或者<ip> <tianfengyinlou.cn>
3 <subject_no> 主體備案號 青ICP備11000289號
4 <addr> 注冊地址 青海省西寧市城中區南關街138號
5 <check_time> 備案時間, 時間對象 2011-06-23 16:38:00
6 <update_time> 更新時間, 毫秒級時間戳 1607414120745
7 <site_no> 網站備案/許可證號 青ICP備11000289號-2
8 <site_url> 站點/網站首頁網址 <www.tianfengyinlou.cn>
9 <comp_name> 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
## awk
### 取行
awk可以通過NR(Number of Record) 指定行號,輸出特定的行:
~~~bash
# 輸出第三行
awk 'NR==3' text.txt
3 subject_no 主體備案號 青ICP備11000289號
~~~
也可以按行號范圍輸出:
~~~bash
# 輸出第三到第六行
awk 'NR==3, NR==6' text.txt
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
# 也可以通過比較指定輸出范圍
# 輸出3到4行
awk 'NR>=3 && NR<5' text.txt
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
~~~
第二個NR如果是個無效的行號值,則默認取出指定起始行之后所有的行記錄:
~~~bash
# 輸出第三行之后的所有行
awk 'NR==3, NR==xx' text.txt
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象 2011-06-23 16:38:00
6 update_time 更新時間, 毫秒級時間戳 1607414120745
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
取行操作依然支持正則匹配:
~~~bash
# 輸出包含青的行
awk '/青/' text.txt
1 province 省份 青海省
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
7 site_no 網站備案/許可證號 青ICP備11000289號-2
# 輸出以"號"結尾的行
awk '/號$/' text.txt
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
# 輸出包含domain到包含addr的行
awk '/domain/, /addr/' text.txt
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
~~~
### 取列
awk可以使用{print $列號} 取出列值:
~~~dart
# 例如,取出第二列的值
awk '{print $2}' text.txt
province
domain
subject_no
addr
check_time
update_time
site_no
site_url
comp_name
# 取出第2列及最后一列NF(Number of Fields)的值
awk '{print $2,$NF}' text.txt
province 青海省
domain tianfengyinlou.cn
subject_no 青ICP備11000289號
addr 青海省西寧市城中區南關街138號
check_time 16:38:00
update_time 1607414120745
site_no 青ICP備11000289號-2
site_url www.tianfengyinlou.cn
comp_name 西寧天豐銀樓金銀珠寶有限公司
# 使用column -t 對齊輸出
awk '{print $2,$NF}' text.txt | column -t
province 青海省
domain tianfengyinlou.cn
subject_no 青ICP備11000289號
addr 青海省西寧市城中區南關街138號
check_time 16:38:00
update_time 1607414120745
site_no 青ICP備11000289號-2
site_url www.tianfengyinlou.cn
comp_name 西寧天豐銀樓金銀珠寶有限公司
~~~
awk取列時,默認是空格為分隔符,可以通過-F指定分隔符,例如,第7-8行:
~~~bash
awk "NR==7,NR==8" text.txt
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
~~~
取出第7、8行后,按/進行劃分,取出劃分后的第二列:
~~~dart
awk "NR==7,NR==8" text.txt | awk -F/ '{print $2}'
許可證號 青ICP備11000289號-2
網站首頁網址 www.tianfengyinlou.cn
~~~
\-F 可以通過\[\]正則指定多個分隔符:
~~~dart
# 按空格和/ 進行分隔, 取出1到4列
awk "NR==7,NR==8" text.txt | awk -F'[ /]+' '{print $1,$2,$3,$4}'
7 site_no 網站備案 許可證號
8 site_url 站點 網站首頁網址
~~~
### 精確取行列
awk可以精確取出某一行某一列的值。一些用例如:
~~~dart
# ~ 表示包含, !~ 表示不包含
# 取出第四列包含"青"的行
awk '$4 ~ /青/' text.txt
1 province 省份 青海省
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
7 site_no 網站備案/許可證號 青ICP備11000289號-2
# 取出第四列以"號"結尾的行,并輸出最后一列
awk '$4 ~ /號$/{print $NF}' text.txt
青ICP備11000289號
青海省西寧市城中區南關街138號
# 取出第2列以d開始,到第四列以號結尾的行記錄
awk '$2 ~ /^d/, $4 ~/號$/' text.txt
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
~~~
### BEGIN
awk可以使用BEGIN在操作文件內容前執行一些命令:
~~~swift
# 列如輸出表頭
awk 'BEGIN{print "序號","名稱","含義","示例"} {print $1,$2,$3,$4}' text.txt | column -t
序號 名稱 含義 示例
1 province 省份 青海省
2 domain 域名或者ip tianfengyinlou.cn
3 subject_no 主體備案號 青ICP備11000289號
4 addr 注冊地址 青海省西寧市城中區南關街138號
5 check_time 備案時間, 時間對象
6 update_time 更新時間, 毫秒級時間戳
7 site_no 網站備案/許可證號 青ICP備11000289號-2
8 site_url 站點/網站首頁網址 www.tianfengyinlou.cn
9 comp_name 主辦單位名稱(公司名稱) 西寧天豐銀樓金銀珠寶有限公司
~~~
### END
awk可以使用END在操作文件內容后執行一些命令:
~~~bash
# 通常用于做統計, 例如對第一列求和
awk '{sum+=$1} END{print sum}' text.txt
45
~~~
## 使用小結
* grep、sed、awk都可以過濾行記錄,但過濾行記錄時優先選擇grep,其過濾行的效率最高。
* sed主要用于對文件內容做出各種修改(增加、替換等)。
* awk主要用于對文件內容取行列操作。
- php開發
- 常用技巧
- 字符數組對象
- php換行替換,PHP替換回車換行符的三種方法
- PHP 數組轉字符串,與字符串轉數組
- php將img中的寬高刪除,PHP刪除HTML中寬高樣式的詳解
- php去除換行(回車換行)的三種方法
- php 過濾word 樣式
- php如何設置隨機數
- 2個比較經典的PHP加密解密函數分享
- php怎么去除小數點后多余的0
- php中判斷是一維數組還是二維數組的解決方案
- php 獲取數組中出現次數最多的值(重復最多的值)與出現的次數
- PHP過濾掉換行符、特殊空格、制表符等
- PHP中json_endoce轉義反斜杠的問題
- PHP過濾Emoji表情和特殊符號的方法
- PHP完美的提取鏈接正則
- php很牛的圖片采集
- 日期處理
- php 獲取今日、昨日、上周、本月的起始時間戳和結束時間戳的方法非常簡單
- PHP指定時間戳/日期加一天,一年,一周,一月
- 使用php 獲取時間今天明天昨天時間戳的詳解
- php獲得當月的節假日函數(包含周末,年度節假日)
- PHP獲取本月起始和截止時間戳
- php 獲取每月開始結束時間,php 獲取指定月份的開始結束時間戳
- PHP獲取今天,昨天,本月,上個月,本年 起始時間戳
- php、mysql查詢當天,本周,本月的用法
- php獲取兩個時間戳之間相隔多少天多少小時多少分多少秒
- 毫秒級時間戳和日期格式轉換
- php-倒計時
- 請求提交上傳
- php+put+post,Curl和PHP-如何通過PUT,POST,GET通過curl傳遞json
- PHP put提交和獲取數據
- PHP curl put方式上傳文件
- 數據導入導出
- PHP快速導入大量數據到數據庫的方法
- PHP快速導出百萬級數據到CSV或者EXCEL文件
- PHP解析大型Excel表格的庫:box/spout
- PHP導入(百萬級)Excel表格數據
- PHP如何切割excel大文件
- 使用 PHP_XLSXWriter 代替 PHPExcel 10W+ 數據秒級導出
- 安裝php擴展XLSXWriter
- 解決php導入excel表格時獲取日期變成浮點數的方法
- xml處理
- PHP XML和數組互相轉換
- php解析xml字符串
- php 生成vcf通訊錄
- 文件操作相關
- php獲取文件后綴的9種方法
- PHP判斷遠程文件是否存在
- PHP獲取文件修改時間,訪問時間,inode修改時間
- php獲取遠程文件大小教程
- php 讀取文件并以文件方式下載
- php 把數字轉化為大寫中文
- 請求響應
- PHP 獲取當前訪問的URL
- 壓縮
- php生成zip壓縮包
- PHPMailer
- 整理PHPMailer 發送郵件 郵件內容為html 可以添加多個附件等
- 通達oa
- OA管理員密碼忘了怎么辦,這里教你分分鐘搞定…
- 跨域
- php解決多站點跨域
- php設置samesite cookie,有效防止CSRF
- Chrome 配置samesite=none方式
- Cookie 的 SameSite 屬性
- 圖片
- php pdf首頁截圖,PHP_PHP中使用Imagick讀取pdf并生成png縮略圖實例,pdf生成png首頁縮略圖
- PHP -- 七牛云 在線視頻 獲取某一幀作為封面圖
- PHP圖片壓縮方法
- 如何解決PHP curl或file_get_contents下載圖片損壞或無法打開的問題
- php遠程下載文章中圖片并保存源文件名不變
- 詳解PHP如何下載采集圖片到本地(附代碼實例)
- php如何將webp格式圖片轉為jpeg
- PHP獲取遠程圖片的寬高和體積大小
- php 軟件版本號比較
- 使用PHP通過SMTP發送電郵
- 常用正則表達式
- php如何用正則表達式匹配中文
- 用于分割字符串的 PHP preg_match_all 正則表達式
- 性能優化
- php.ini配置調優
- PHP 幾種常見超時的設置方法
- PHP函數in_array、array_key_exists和isset效率分析
- php array push 和array_merge 效率誰高,php 通過array_merge()和array+array合并數組的區別和效率比較...
- php 兩個數組取交集、并集、差集
- 設置PHP最大連接數及php-fpm 高并發 參數調整
- 小工具
- php 獲取代碼執行時間和消耗的內存
- PHP如何判斷某項擴展是否開啟
- centos7.x下php 導出擴展 XLSXWriter 安裝
- php生成mysql數據庫字典
- PHP 實現 word/excel/ppt 轉換為 PDF
- composer的使用
- showdoc sqlite3 找回管理員密碼
- php怎么將數組轉為xml
- PHP抖音最新視頻提取代碼
- yii
- Yii2 如何獲取Header參數?
- swoole
- Linux下搭建swoole服務的基本步驟
- 相關學習資料
- 帶你學習swoole_process詳解
- 按照官方文檔 在win10下安裝 docker for windows easyswoole鏡像 掛載目錄
- php常用框架
- Hyperf
- 常用算法PHP版
- thinkphp6
- TP6 事件綁定、監聽、訂閱
- Thinkphp 模板中輸出HTML的變量
- Thinkphp6(操作SQL數據庫)
- thinkphp6 mysql查詢語句對于為null和為空字符串給出特定值處理
- Thinkphp 6 - 連接配置多個數據庫并實現自由切換(詳細過程及實例demo)
- TP框架中的Db::name 和 dB::table 以及 db('') 的區別
- thinkphp6.0模型篇之模型的軟刪除
- thinkphp6自定義日志驅動,增加顯示全部請求信息
- 其他系統
- 微擎數據庫字段字典
- Flutter實現微信支付和iOS IAP支付
- Flutter上線項目實戰——蘋果內購
- PHP接入蘋果支付
- 調試
- php如何獲取當前腳本所有加載的文件
- php跟蹤所有調用方法,日志方法
- 解析phpstorm + xdebug 遠程斷點調試
- PHP XDEBUG調試 PHPSTORM配置
- 異常處理
- PHP 出現 502 解決方案
- php 語法解析錯誤 syntax error unexpected namespace T_NAMESPACE
- Composer 安裝與使用
- 數據庫相關
- php pdo怎么設置utf8
- php 如何根據最新聊天對用戶進行排序
- php lic&fpm
- 讓php程序在linux后臺執行
- PHPcli模式和fpm模式優缺點在哪里?
- 運行模式
- php運行模式之cli模式
- 自己庫
- php批量獲取所有公眾號粉絲openid
- 地圖
- php 判斷點在多邊形內,php百度地圖api判斷地址是否在多邊形區域內
- PHP,Mysql-根據一個給定經緯度的點,進行附近地點查詢
- MySQL 根據經緯度查找排序
- PHP+MySQL獲取坐標范圍內的數據
- 【百度地圖】刪除指定覆蓋物
- 百度地圖多點+畫連接線+數字標注
- laravel5.8
- laravel5.8(四)引入自定義常量文件及公共函數文件
- Lumen 查詢執行SQL
- 使你的 Laravel 項目模塊化
- Laravel 多條件 AND , OR條件組合查詢
- Laravel 查詢 多個or或者and條件
- laravel redis操作大全
- laravel中外部定義whereIn的用法和where中使用in
- lumen5.8
- 創建laravel5.8 lumen前后臺api項目--記錄請求和響應日志
- Laravel和Lumen開啟SQL日志記錄
- Laravel 5.8 常用操作(路徑+日志+分頁+其他操作)
- 升級php7.4 laravel lumen報錯Trying to access array offset on value of type null
- Laravel 任務調度(計劃任務,定時任務)
- laravel的command定時任務時間的設置
- Laravel任務調度的簡單使用
- laravel單數據庫執行事務和多數據庫執行事務
- laravel中鎖以及事務的簡單使用
- 申請其他相關
- 小程序地理位置接口申請
- PHP高并發
- php 高并發下 秒殺處理思路
- 記錄 PHP高并發 商品秒殺 問題的 Redis解決方案
- thinkphp3.2
- thinkphp3.2 數據庫 AND OR連綴使用
- laravel
- laravel的聯表查詢with方法的使用
- laravel獲取請求路由對應的控制器和方法
- Laravel 模型關聯建立與查詢
- Laravel多表(3張表以上)with[]關聯查詢,對關聯的模型做條件查詢(has,跟join一樣結果 )
- Laravel模型屬性的隱藏屬性、顯示屬性和臨時暴露隱藏屬性用法介紹
- aravel獲取當前的url以及當前的基礎域名方法匯總
- Laravel 模型實現多庫查詢或者多表映射
- 關于 Laravel 的 with 多表查詢問題
- Laravel 模型過濾(Filter)設計
- 懶加載、預加載、with()、load() 傻傻分不清楚?
- laravel模型$castsl屬性
- Laravel Query Builder 復雜查詢案例:子查詢實現分區查詢 partition by
- Laravel 模型關聯、關聯查詢、預加載使用實例
- laravel 中with關聯查詢限定查詢字段
- laravel 原生字段查詢 whereRaw 和 where(DB::raw(''))
- lavarel - where條件分組查詢(orWhere)
- 通過 Laravel 查詢構建器實現復雜的查詢語句
- 兩個結果集合并成一個
- Laravel 對某一列進行篩選然后求和 sum()
- laravel怎么優雅的拼接where,處理whereIn與where數組查詢的問題
- laravel查詢時判斷是否存在數據
- laravel中的whereNull和whereNotNull
- laravel框架中的子查詢
- Laravel框架中 orwhere 多條件查詢的使用
- Laravel中where的高級使用方法
- laravel復雜的數據庫查詢(事例)
- laravel多條件查詢方法(and,or嵌套查詢)
- Laravel 的 where or 查詢
- Laravel 進行where 多個or和and的條件查詢可用
- laravel Middleware 中間件 $next($request) 報錯不執行問題
- 基于Laravel框架--自定義CORS跨域中間件
- laravel9新增路由文件及解決跨域問題方法
- 解決在laravel中leftjoin帶條件查詢沒有返回右表為NULL的問題
- 【Laravel 】faker數據填充詳解
- 數據庫
- mysql
- mysql聯合索引(復合索引)詳解
- MYSQL 清空表和截斷表
- MySQL快速生成大量測試數據(100萬、1000萬、1億)
- 提高mysql千萬級大數據SQL查詢優化30條經驗(Mysql索引優化注意)
- MySQL常用命令
- MySQL(三)|《千萬級大數據查詢優化》第一篇:創建高性能的索引
- MySQL(一)|性能分析方法、SQL性能優化和MySQL內部配置優化
- MySQL(二)|深入理解MySQL的四種隔離級別及加鎖實現原理
- MySQL(四)|《千萬級大數據查詢優化》第一篇:創建高性能的索引(補充)
- MySQL(五)|《千萬級大數據查詢優化》第二篇:查詢性能優化(1)
- MySQL(六)|《千萬級大數據查詢優化》第二篇:查詢性能優化(2)
- MySQL(七)|MySQL分庫分表的那點事
- Mysql索引優化 Mysql通過索引提升查詢效率(第二棒)
- MySQL查詢的性能優化(查詢緩存、排序跟索引)
- 【總結】MySQL數據庫
- MySQL存儲引擎、事務日志并發訪問以及隔離級別
- 技巧
- 數據庫 SQL查詢重復記錄 方法
- 替換數據庫中某個字段中的部分字符
- mysql開啟bin log 并查看bin log日志(linux)
- 分表分區
- 千萬級別數據的mysql數據表優化
- MYSQL百萬級數據,如何優化
- MySQL備份和恢復
- MySQL間隙鎖死鎖問題
- 小技巧
- 基礎
- MySQL中sql_mode參數
- mysql數據庫異常
- this is incompatible with sql_mode=only_full_group_by
- mysql安全
- MySQL數據庫被比特幣勒索及安全調整
- mysql忘記密碼后重置(以windows系統mysql 8.4為例)
- MongoDB
- sql查詢
- MYSQL按時間段分組查詢當天,每小時,15分鐘數據分組
- 高級
- 基于 MySQL + Tablestore 分層存儲架構的大規模訂單系統實踐-架構篇
- 數據庫安全
- 服務器被黑,MySQL 數據庫遭比特幣勒索!該如何恢復?
- 數千臺MySQL數據庫遭黑客比特幣勒索,該怎么破?
- MySQL 數據庫規范
- MySQL數據庫開發的36條鐵律
- Elasticsearch
- 安裝與配置
- ElasticSearch關閉重啟命令
- 設置ES默認分詞器IK analyzer
- 查詢
- elasticsearch 模糊查詢不分詞,實現 mysql like
- elasticSearch多條件高級檢索語句,包含多個must、must_not、should嵌套示例,并考慮nested對象的特殊檢索
- elasticSearch按字段普通檢索,結果高亮
- Elasticsearch 如何實現查詢/聚合不區分大小寫?
- 索引更新&刷新
- refresh與批量操作的效率
- Elasticsearch 刪除type
- 分詞器
- ElasticSearch最全分詞器比較及使用方法
- 異常錯誤
- 解決ES因內存不足而無法查詢的錯誤,Data too large, data for [<http_request>]
- linux
- 基本知識
- CentOS7.5 通過wget下載文件到指定目錄
- 【CentOS】vi命令
- centos7查看硬盤使用情況
- CentOS7 查看目錄大小
- Centos 7下查看當前目錄大小及文件個數
- 普通用戶sudo\su 到root免密碼
- 普通用戶切換到root用戶下的免密配置方法
- linux 獲取進程啟動參數,linux查看進程啟動及運行時間
- Linux 查看進程
- linux刪除文件后不釋放磁盤的問題
- Linux查找大文件命令
- linux 如何關閉正在執行的php腳本
- linux三劍客(grep、sed、awk)基本使用
- centos 卸載軟件
- centos查看內存、cpu占用、占用前10,前X
- Centos 查看系統狀態
- 異常
- 問題解決:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist:...
- php相關
- centos 安裝phpize
- Centos7.2下phpize安裝php擴展
- 切換版本
- 運營工具
- 資深Linux運維工程師常用的10款軟件/工具介紹
- 一款良心的終端連接工具
- 六款Linux常用遠程連接工具介紹,看看哪一款最適合你
- Finalshell
- Linux Finalshell連接centos7和文件無顯示問題
- WSL2:我在原生的Win10玩轉Linux系統
- MobaXterm
- 運維
- linux服務器上定時自動備份數據庫,并保留最新5天的數據
- Centos系統開啟及關閉端口
- CentOS7開放和關閉端口命令
- Linux中查看所有正在運行的進程
- 防火墻firewall-cmd命令詳解
- centos 7.8阿里云服務器掛載 數據盤
- Linux Finalshell連接centos7和文件無顯示問題
- Centos7系統端口被占用問題的解決方法
- vi
- 如何在Vim/Vi中復制,剪切和粘貼
- 命令
- [Linux kill進程] kill 進程pid的使用詳解
- 備份還原
- Linux的幾種備份、恢復系統方式
- Linux系統全盤備份方法
- 相關軟件安裝
- linux下 lua安裝
- python
- 升級pip之后出現sys.stderr.write(f“ERROR: {exc}“)
- lua
- centos源碼部署lua-5.3
- deepin
- deepin20.6設置默認的root密碼
- 任務相關
- 寶塔定時任務按秒執行
- CentOS 7 定時任務 crontab 入門
- centos7定時任務crontab
- Linux下定時任務的查看及取消
- Linux(CentOS7)定時執行任務Crond詳細說明
- Linux 查看所有定時任務
- linux查看所有用戶定時任務
- Linux 定時任務(超詳細)
- 防火墻
- Centos7開啟防火墻及特定端口
- CentOS防火墻操作:開啟端口、開啟、關閉、配置
- 生成 SSH 密鑰(windows+liunx)
- 阿里云,掛載云盤
- 前端
- layui
- layui多文件上傳
- layer.msg()彈框,彈框后繼續運行
- radio取值
- layui-數據表格排序
- Layui select選擇框添加搜索選項功能
- 保持原來樣式
- layui表格單元如何自動換行
- layui-laydate時間日歷控件使用方法詳解
- layui定時刷新數據表格
- layer 延時設置
- layer.open 回調函數
- 【Layui內置方法】layer.msg延時關閉msg對話框(代碼案例)
- layui多圖上傳圖片順序錯亂及重復上傳解決
- layer.confirm關閉彈窗
- vue
- Vue跨域解決方法
- vue 4.xx.xx版本降級至2.9.6
- vue-cli 2.x升級到3.x版本, 和3.x降級到2.x版本命令
- 最新版Vue或者指定版本
- Vue2.6.11按需模塊安裝配置
- jQuery
- jQuery在頁面加載時動態修改圖片尺寸的方法
- jquery操作select(取值,設置選中)
- 日歷
- FullCalendar中文文檔:Event日程事件
- js
- JS 之 重定向
- javascript截取video視頻第一幀作為封面方案
- HTML <video> preload 屬性
- jQuery使用ajax提交post數據
- JS截取視頻靚麗的幀作為封面
- H5案例分享:移動端touch事件判斷滑屏手勢的方向
- JS快速獲取圖片寬高的方法
- win
- Windows環境下curl的使用
- Cygwin
- Windows下安裝Cygwin及apt-cyg
- Cygwin 安裝、CMake 安裝
- mklink命令 詳細使用
- Nginx
- Nginx高級篇-性能優化
- Nginx常用命令(Linux)
- linux+docker+nginx如何配置環境并配置域名訪問
- Nginx的啟動(start),停止(stop)命令
- linux 查看nginx 安裝路徑
- 安裝配置
- Linux 查看 nginx 安裝目錄和配置文件路徑
- 【NGINX入門】3.Nginx的緩存服務器proxy_cache配置
- thinkphp6.0 偽靜態失效404(win下)
- 深入
- nginx rewrite及多upstream
- Nginx負載均衡(upstream)
- 專業術語
- 耦合?依賴?耦合和依賴的關系?耦合就是依賴
- PHP常用六大設計模式
- 高可用
- 分布式與集群
- Nginx 實踐案例:反向代理單臺web;反向代理多組web并實現負載均衡
- 容器
- Docker
- 30 分鐘快速入門 Docker 教程
- linux查看正在運行的容器,說說Docker 容器常用命令
- Windows 安裝Docker至D盤
- 配置
- win10 快速搭建 lnmp+swoole 環境 ,部署laravel6 與 swoole框架laravel-s項目1
- win10 快速搭建 lnmp+swoole 環境 ,部署laravel6 與 swoole框架laravel-s項目2
- docker 容器重命名
- Linux docker常用命令
- 使用
- docker 搭建php 開發環境 添加擴展redis、swoole、xdebug
- docker 單機部署redis集群
- Docker 退出容器不停止容器運行 并重新進入正在運行的容器
- 進入退出docker容器
- Docker的容器設置隨Docker的啟動而啟動
- 使用異常處理
- docker容器中bash: vi: command not found
- OCI runtime exec failed: exec failed:解決方法
- docker啟動容器慢,很慢,特別慢的坑
- 解決windows docker開發thinkphp6啟動慢的問題
- 【Windows Docker】docker掛載解決IO速度慢的問題
- Docker的網絡配置,導致Docker使用網路很慢的問題及解決辦法
- golang工程部署到docker容器
- Docker 容器設置自啟動
- 如何優雅地刪除Docker鏡像和容器(超詳細)
- 5 個好用的 Docker 圖形化管理工具
- Docker 可能會用到的命令
- Kubernetes
- 消息隊列
- RabbitMQ
- php7.3安裝使用rabbitMq
- Windows環境PHP如何使用RabbitMQ
- RabbitMQ學習筆記:4369、5672、15672、25672默認端口號修改
- Window10 系統 RabbitMQ的安裝和簡單使用
- RabbitMQ默認端口
- RabbitMQ可視化界面登錄不了解決方案
- RocketMQ
- Kafka
- ActiveMQ
- mqtt
- phpMQTT詳解以及處理使用過程中內存耗死問題
- MQTT--物聯網(IoT)消息推送協議
- php實現mqtt發布/發送 消息到主題
- Mqtt.js 的WSS鏈接
- emqx
- 如何在 PHP 項目中使用 MQTT
- emqx 修改dashboard 密碼
- 其他
- Windows 系統中單機最大TCP的連接數詳解
- EMQX
- Linux系統EMQX設置開機自啟
- Centos7 EMQX部署
- docker安裝 EMQX 免費版 docker安裝并配置持久化到服務器
- 實時數倉
- 網易云音樂基于 Flink + Kafka 的實時數倉建設實踐
- 實時數倉-基于Flink1.11的SQL構建實時數倉探索實踐
- 安全
- 網站如何保護用戶的密碼
- 關于web項目sessionID欺騙的問題
- php的sessionid可以偽造,不要用來做防刷新處理了
- DVWA-Weak Session IDs (弱會話)漏洞利用方式
- 保證接口數據安全的10種方案
- cookie和session的竊取
- 萬能密碼漏洞
- 黑客如何快速查找網站后臺地址方法整理
- 網站后臺萬能密碼/10大常用弱口令
- 萬能密碼漏洞02
- 大多數網站后臺管理的幾個常見的安全問題注意防范
- token可以被竊取嗎_盜取token
- token被劫持[token被劫持如何保證接口安全性]
- PHP給后臺管理系統加安全防護機制的一些方案
- php - 重新生成 session ID
- 隱藏響應中的server和X-Powered-By
- PHP會話控制之如何正確設置session_name
- Session攻擊001
- PHP防SQL注入代碼,PHP 預防CSRF、XSS、SQL注入攻擊
- php25個安全實踐
- php架構師 系統管理員必須知道的PHP安全實踐
- 版本控制
- Linux服務器關聯Git,通過執行更新腳本實現代碼同步
- PHP通過exec執行git pull
- git 在linux部署并從windows上提交代碼到linux
- git上傳到linux服務器,git一鍵部署代碼到遠程服務器(linux)
- linux更新git命令,使用Linux定時腳本更新服務器的git代碼
- git異常
- 如何解決remote: The project you were looking for could not be found
- git status顯示大量文件修改的原因是什么
- PHPstorm批量修改文件換行符CRLF為LF
- git使用
- git常用命令大全
- centos git保存賬戶密碼
- GIT 常用命令
- git怎樣還原修改
- Git 如何放棄所有本地修改的方法
- Git忽略文件模式改變
- git: 放棄所有本地修改
- Git三種方法從遠程倉庫拉取指定的某一個分支
- 雜七雜八
- h5視頻
- H5瀏覽器支持播放格式:H264 AVCA的MP4格式,不能轉換為mpeg-4格式,
- iOS無法播放MP4視頻文件的解決方案 mp4視頻iphone播放不了怎么辦
- h5點播播放mp4視頻遇到的坑,ios的h5不能播放視頻等
- 【Linux 并發請求數】支持多少并發請求數
- Linux下Apache服務器并發優化
- 緩存
- redis
- Linux啟動PHP的多進程任務與守護redis隊列
- 重啟redis命令
- golang