【Shell】shell截取字符串方式(cut、awk、sed命令)


1.cut

-b :以字節為單位進行分割。這些字節位置將忽略多字節字符邊界,除非也指定了 -n 標志。
-c :以字符為單位進行分割。

-d:自定義分隔符,默認為制表符。

-f:與-d一起使用,指定顯示哪個區域。

-n:取消分割多字節字符。僅和-b標志一起使用。如果字符的最后一個字節落在由-b標志的List參數指示的范圍之內,該字符將被寫出;否則,該字符將被排除。

 

-b

.eg1:然后調用cut,即剪切字符串中的第2和第5個字節。

echo"123abc"|cut -b 2,5

先輸出123abc

輸出為2b

.eg2:cut掉11-14位置的字符

 echo "123456789abcdefghjklmnopq" | cut -b 11-14

輸出為bcde

-c

用法示例輸出/etc/passwd文件每一行的前4個字符$ sudo cut -c 1-4 /etc/passwd

      取完之后     

 

-d

 cut命令用於列提取,默認分隔符是tab鍵。

選項:-d指定分隔符,-f指定提取第幾列

eg1: 以%作為分隔符 輸出第一個%前的區域1的東西,輸出區域2的東西       

root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -d \% -f 1
CPU:  busy 14
root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -d \% -f 2
  (system=10
root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -b 11-14 | cut -d \% -f 1
 14
root@ROUTER:~# echo "CPU:  busy 14%  (system=10% user=3% nice=0% idle=85%)" | cut -b 11-14 
 14%

 

 

2.sed

 eg1:去除文本中的所有數字

sed 's/[0-9]//g'

[0-9]匹配一個數字,

s/A/B/ 將A替換為B
g表示全局替換為空格

 

eg2:取當前的接口的ip,把所有的:替換為空格,然后打印出空格為分割的第幾個數

root@Evelyn:~# ifconfig
ens33     Link encap:Ethernet  HWaddr 00:0c:29:12:22:f9  
          inet addr:192.168.23.44  Bcast:192.168.23.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1291454 errors:5 dropped:98200 overruns:0 frame:0
          TX packets:645293 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:366412938 (366.4 MB)  TX bytes:261011986 (261.0 MB)
          Interrupt:19 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1718636 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1718636 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:1136827513 (1.1 GB)  TX bytes:1136827513 (1.1 GB)

root@Evelyn:~# ifconfig ens33 | grep Bcast | sed 's/:/ /g' | awk '{print $3}'
192.168.23.44

eg3:取出延時時間的數字

 ping 192.168.120.1 -s 1000 -c 5 | grep time | sed 's/=/ /g' | awk '{print $10}'

 3. awk

①語法格式:awk  '條件1{動作1}條件2{動作2}...'  文件

條件,一般使用關系表達式作為條件,如a>10。動作,格式化輸出或流程控制語句

awk一次讀入一整行,默認以tab鍵或者空格為分隔符將一行分為多個字段,表示為$1、$2、$3...其中$0表示文件名

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM