Shell編程之字符截取命令

AWK命令

awk ‘條件1(動作1)條件2(動作2)...’ 文件名

條件(pattern)
一般使用關係表達式作爲條件
x>10判斷x是否大於10
x>=10大於等於
x<=10小於等於

動作(Action)
-格式化輸出
-流程控制語句

awk使用示例:
awk '{printf $1 "\t" $2 "\n"}'

awk 'BEGIN{printf "test"}{printf $1}' //在輸出語句前輸出指定字符串

awk 'END{printf "test"}{printf $1}'//在輸出語句後輸出指定字符串


FS內置變量
cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\n"}'
//BEGIN在讀取數據前先指定分隔符
FS內置變量設定分隔符

關係運算符
cat /etc/passwd | awk 'BEGIN{FS=":"}$3<300{printf $1 "\t" $3 "\n"}'

awk常用的內置變量
ARGC               命令行參數個數
ARGV               命令行參數排列
ENVIRON            支持隊列中系統環境變量的使用
FILENAME           awk瀏覽的文件名
FNR                瀏覽文件的記錄數
FS                 設置輸入域分隔符,等價於命令行 -F選項
NF                 瀏覽記錄的域的個數
NR                 已讀的記錄數
OFS                輸出域分隔符
ORS                輸出記錄分隔符
RS                 控制記錄分隔符


CUT命令

cut字段提取命令
cut[選項] 文件名
選項:
-f 列號:提取第幾列
-d 分隔符:按照指定分隔符分割列

df  -h| cut -f 1(無法提取列)
cut命令適用比較規律的分割字段,如製表符

實際命令練習,備份創建過的用戶
grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":" user.log


SED命令

sed [選項]  '[動作]' 文件名
選項:
-n:一般sed命令會把所有數據都輸出到屏幕,如果加入此選擇,則只會把經過sed命令處理過的行輸出到屏幕

-e:允許對輸入數據應用多條sed命令編輯

-i:用sed命令的修改結果直接修改讀取數據的文件,而不是由屏幕輸出

動作:
-a:追加,在當前行後添加一行或多行
-c:行替換,用c後面的字符串替換原數據行
-i:插入,在當前行前插入一行或多行,d:刪除指定行
-p:打印,輸出指定的行
-s:字串替換,用一個字符串替換另外一個字符串。格式爲“行範圍s/舊字串/新字串/g"(和vim中的替換格式類似)// sed '5s/mbb/mb/g' user.log

printf命令(輸出命令)

printf命令(格式化輸出命令)

printf ‘輸出類型輸出格式’ 輸出內容

輸出類型:
—%ns:輸出字符串。n是數字指代輸出幾個字符
—%ni:輸出整數。n是數字指代輸出幾個數字
—%m.nf:輸出浮點數,m和n是數字,指代輸出的整數位和小數位。如%8.2f代表共輸出8位數,其中2位數是小數,6位是整數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章