printf:格式化輸出命令
%ns:輸出字串。n是數字指代輸出幾個字元
%ni:輸出整數。n是數字指代輸出幾個數字
%m.nf:輸出浮點數。m和n是數字,指代輸出的整數字數和小數字數。如%8.2f 代表共輸出8位數,其中2位是小數,6位是整數。
輸出格式:
\a:輸出警告聲音
\b:輸出退格鍵,也就是backspace鍵
\f:清除螢幕
\n:換行
\r:回車,也就是enter鍵
\t:水平輸出退格鍵,也就是tab鍵
\v:垂直輸出退格鍵,也就是tab鍵
[root@localhost tmp]# printf '%s %s %s\n' 1 2 3 4 5 6
1 2 3
4 5 6
[root@localhost tmp]# cat student.txt
id name gender mark
1 sl m 89
2 hus m 90
3 sd m 99
[root@localhost tmp]# printf '%s\t %s\t %s\t %s\n' $(cat student.txt)
id name gender mark
1 sl m 89
2 hus m 90
3 sd m 99
awk '條件1 條件2...' 檔名
條件:x>10 判斷變數x是否大於10
x>=10 大於等於
x<=10 小於等於
動作:格式化輸出
流程控制語句
[root@localhost tmp]# cat student.txt
id name gender mark
1 sl m 89
2 hus m 90
3 sd m 99
[root@localhost tmp]# awk '' student.txt
name mark
sl 89
hus 90
sd 99
說明:$2 代表第二列
$4 代表第四列
[root@localhost tmp]# df -h | grep /dev/sda1
/dev/sda1 1014m 133m 882m 14% /boot
[root@localhost tmp]# df -h | grep /dev/sda1 | awk ''
14%[root@localhost tmp]# df -h | grep /dev/sda1 | awk '' | cut -d "%" -f 1
14begin 用法:
在執行輸出第二列第四列之前,先輸出 test!!
[root@localhost tmp]# awk 'begin ' student.txt
test!!
name mark
sl 89
hus 90
sd 99
fs內建變數,分隔符:第一列沒有分割
[root@localhost tmp]# awk ' ' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
sshd 74
postfix 89
mysql 27
nginx 998
chrony 997
zhangsan 1000
user1 1001
user2 1002
user3 1003
新增begin,第一列分割
[root@localhost tmp]# awk 'begin ' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
sshd 74
postfix 89
mysql 27
nginx 998
chrony 997
zhangsan 1000
user1 1001
user2 1002
user3 1003
end命令,在所有的命令執行後,在執行:
[root@localhost tmp]# awk 'end' student.txt
id gender
1 m2 m
3 mthe end!!
sed [選項]'[動作]' 檔名
選項:-n:一般sed命令會把所有資料都輸出到螢幕,如果加入此選擇,則只會把經過sed命令處理的行輸出到螢幕。
-e:允許對輸入資料應用多條sed命令編輯
-i:用sed的修改結果直接修改讀取資料的檔案,而不是由螢幕輸出
動作:a\: 追加,在當前行後新增一行或多行。新增多行時,除最後一行外 ,每行末尾需要用「\」代表資料未完結。
c\: 行替換,用c後面的字串 替換原資料行,替換多行時,除最後一行外,每行末尾需用「\」代表資料未完結。
i\: 插入,在當前行前插入一行或多行。插入多行時,除最後一行外,每行末尾需要用「\」代表資料未完結。
d: 刪除,刪除指定的行。
p: 列印,輸出指定的行
s: 字串替換 ,用乙個字串替換另乙個字串。格式「行範圍s/舊字串/新字串/g」
輸出檔案第二行:
[root@localhost tmp]# cat student.txt
id name gender mark
1 sl m 89
2 hus m 90
3 sd m 99
[root@localhost tmp]#
原檔案也會在下面輸出
[root@localhost tmp]# sed '2p' student.txt
id name gender mark
1 sl m 89
1 sl m 89
2 hus m 90
3 sd m 99
原檔案不會在下面輸出
[root@localhost tmp]# sed -n '2p' student.txt
1 sl m 89
刪除第2行到第4行:
[root@localhost tmp]# cat student.txt
id name gender mark
1 sl m 89
2 hus m 90
3 sd m 99
[root@localhost tmp]# sed '2,4d' student.txt
id name gender mark
在第二行後追加hello
[root@localhost tmp]# sed '2a hello' student.txt
id name gender mark
1 sl m 89
hello
2 hus m 90
3 sd m 99
在第二行前插入兩行資料:
[root@localhost tmp]# sed '2i hello\nihao' student.txt
id name gender mark
hello
ihao
1 sl m 89
2 hus m 90
3 sd m 99
第四行替換為 no person
[root@localhost tmp]# sed '4c no person' student.txt
id name gender mark
1 sl m 89
2 hus m 90
no person
第三行中90換成10
[root@localhost tmp]# sed '3s/90/10/g' student.txt
id name gender mark
1 sl m 89
2 hus m 10
3 sd m 99
替換完儲存到檔案:
[root@localhost tmp]# sed -i '3s/90/10/g' student.txt
[root@localhost tmp]# cat student.txt
id name gender mark
1 sl m 89
2 hus m 10
3 sd m 99
把sl和sd替換為空
[root@localhost tmp]# sed -e 's/sl//g;s/sd//g' student.txt
id name gender mark
1 m 89
2 hus m 10
3 m 99
格式化輸出
a 浮點數 十六進製制數字和p 記數法 a 浮點數 十六進製制數字和p 記法 c 乙個字元 char c 乙個iso寬字元 d 有符號十進位制整數 int ld ld 長整型資料 long hd 輸出短整形。e 浮點數 e 記數法 e 浮點數 記數法 f 單精度浮點數 預設float 十進位制記數法...
格式化輸出
a 浮點數 十六進製制數字和p 記數法 a 浮點數 十六進製制數字和p 記法 c 乙個字元 char c 乙個iso寬字元 d 有符號十進位制整數 int ld ld 長整型資料 long hd 輸出短整形。e 浮點數 e 記數法 e 浮點數 記數法 f 單精度浮點數 預設float 十進位制記數法...
格式化輸出
簡單輸出 print 你好小明 print 你好小紅 print 你好小李 帶變數的輸出 更有靈活性,易於維護 name 小李 print name 加號拼接字串 pay 8 print 花費一共 pay 元 print裡用逗號列印多個變數 name 小明 score 90 print name,s...