shell程式設計基礎 文字處理

2021-10-11 20:59:02 字數 2017 閱讀 9138

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缺點是不支援空格為分隔符,需要支援就要使用awk

awk程式設計

處理文字列字串,處理是按照行

格式: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 全面搜尋研究...