Shell筆記——文本操做

chattr 設置文件爲不可修改,不可刪除 

# 設置爲不可修改
chattr +i filename

# 還原爲可修改
chattr -i filename

 

只列出目錄

ls -d */

ls -F | grep "/$"

ls -l | grep "^d"

find . -maxdepth 1 -type d -print

 

查看文件詳細內容

stat filename

 

把命令輸出打印到無底洞

command > /dev/null 2>&1 &

 

paste 按列合併多個文件

paste file1.txt file2.txt -d ","

 

tac  倒序打印文件行

# 命令名稱其實是cat命令倒寫
tac filename1 filename2
tac filename

# 從stdin中讀取
seq 5 | tac

 

tar 命令

# 比較歸檔中文件和文件系統有什麼不一樣:
tar -df archive.tar

# 排除版本控制的目錄(包含子目錄):
tar --exclude-vcs -zcvf DataControl.tar.gz DataControl/

 

生成任意大小的文件

# 該命令會建立一個1MB大小的文件junk.data : if 表明輸入文件(input file)
# of 表明輸出文件(output file), bs 表明以字節爲單位的塊大小(block size)
# count表明須要被複制的塊數 dd if=/dev/zero of=./junk.data bs=1M count=1

 

分割文件和數據

 
 

分割文件成10k(xaa,xab,xac)
split -b 10k file.txtswift

 
 

以數字爲後綴 (-d )(-a 後綴長度)
split -b 10k file.txt -d -a 4bash

 
 

自定義分割文件後綴 (split [COMMAND_ARGS] PREFIX)
split -b 10k file.txt -d -a 4 split_file版本控制

 
 

根據行數分割文件
split -l 10 file.txt -d -a 4 split_file日誌

 
 

切分文件名和擴展名 (貪婪:匹配出最後一個擴展)
filename="Taylorswift.jpg"
文件名(%:非貪婪 %%:貪婪)(從右向左)
name=${filename%.*}
擴展名(#:非貪婪 %%:貪婪)(從左向右)
extension=${filename#*.}code

 
 


csplit分析文本,切割日誌 (server.log)
SERVER-1
[connection] 192.168.0.1
[connection] 192.168.0.2
[disconnect] 192.168.0.3
[connection] 192.168.0.4
SERVER-2
[connection] 192.168.0.1
[connection] 192.168.0.2
[disconnect] 192.168.0.3
[connection] 192.168.0.4
SERVER-3
[connection] 192.168.0.1
[connection] 192.168.0.2
[disconnect] 192.168.0.3
[connection] 192.168.0.4server

 
 

csplit server.log /SERVER/ -s {*} -n 2 -f server -b "%02d.log";rm server00.log
/SERVER/ 用來匹配某一行,分割過程即今後處開始。
{*} 表示根據匹配重複執行分割,直到文件末尾爲止。能夠用{整數}的形式來指定分割執
行的次數。
-s 使命令進入靜默模式,不打印其餘信息。
-n 指定分割後的文件名後綴的數字個數,例如0一、0二、03等。
-f 指定分割後的文件名前綴(在上面的例子中,server就是前綴)
-b 指定後綴格式。例如 %02d.log ,相似於C語言中 printf 的參數格式。在這裏文件名=
前綴+後綴= server + %02d.log
由於分割後的第一個文件沒有任何內容(匹配的單詞就位於文件的第一行中),因此咱們刪
除了server00.logblog

相關文章
相關標籤/搜索