cut
處理文字的列字串,grep是針對處理行
cut -f 2 /etc/passwd
#全部列印,問題是分隔分預設是tab鍵
cut -d ":" -f 2 /etc/passwd
cut -d : -f 2,4 /etc/passwd
#列印出第二列或者下面的第二列和第四列,2,4不是2-4的範圍
cut缺點是不支援空格為分隔符,需要支援就要使用awkawk程式設計
處理文字列字串,處理是按照行
格式:awk 『條件1 條件2 …』
條件(不加條件就是所有列) 動作
內建變數
awk預設是以空格和tab為列分隔符變數需要在引號外面
df -h |
awk''
#支援空格分隔符輸出列
cat /etc/passwd |
awk' '
#問題是第一行被全部列印了,因為awk是先讀取行再進行處理,第一行已經來不及識別分隔符
cat /etc/passwd |
awk'begin '
#已分隔符為:讀取第一列
df -h |
awk''
|cut -d % -f 1 |
grep -v u
#獲取第5列的磁碟容量值
df -h |
awk'$1 ~ /root/ '
#列印第一列包含root字串,列印第5列
sed
修改文字的資料,新增、刪除、插入、替換
格式:sed 選項 動作選項
動作(多行加 \)
字串刪除需要借用替換,新資料為空
sed -i 's/#selinux=enforcing/selinux=disabled/g' /etc/selinux/config
#修改關閉selinux
sed'/^#/d' /etc/selinux/config
#刪除帶有#號的行,正則需要加//
sed -e '/^#/d ; 1a 11111' /etc/selinux/config
#執行多條命令,先刪除後新增
sort 排序
sort /etc/passwd
#以第乙個字元開始排序
sort -n -t : -k 3 /etc/passwd
#第三列以數值進行排序
wc統計
[root@localhost ~]
# wc -lwm /etc/passwd
27 51 1301 /etc/passwd
#27行 51單詞 1301字元數
條件判斷
test命令或者[ ]中括號(判斷是否為真,$?輸出)
格式:[ 選項 檔案]選項:按照檔案型別判斷(預設為真)
選項:按照檔案許可權判斷(預設為真)
無法區分所屬者和所屬組和其他選項:檔案之間時間比較(預設為真)
選項:整數之間比較(預設為真)
選項:字串之間比較(預設為真)
選項:多條件判斷(預設為真)
[ 10 -eq 12 ]
[root@525 ~]
# echo $? 1或
[ 10 -eq 12 ]
&&echo
yes||
echo no
no
shell文字處理
最於檔案的操作以前都是用高階程式語言來操作的。今天恰好需要將乙個目錄中的檔案資訊儲存到sqlite3資料庫中 我用linux中的工具和shell來作為自己畢業設計做原型開發 下面記錄一下這裡用到的部分知識,以作備忘。用ls命令來說明 1.關於shell中的管道和重定向問題。這個知識基礎,這裡不再說了...
shell 文字處理
最近優化指令碼,將幾套指令碼合併,比如,處理nand手機的指令碼和處理emmc手機的指令碼是不一樣的,這導致我們的指令碼有很多個版本。手機側只有busybox,所以不能使用功能強大的python來處理文字。花了半天時間,發現雖然語法比較怪異,但也能簡潔的完成任務。if e proc emmc the...
Shell的文字處理
1.grep定義 grep 命令是一種強大的文字搜尋工具,根據使用者指定的 模式 對目標文字進行匹配檢 查,列印匹配到的行 由正規表示式或者字元及基本文字字元所編寫的過濾條件 global search regular expression and print out the line 全面搜尋研究...