Linux字串截取和處理命令 (cut、printf、awk、sed、sort、wc) 筆記
文章目錄
- Linux字串截取和處理命令 (cut、printf、awk、sed、sort、wc) 筆記
- 1.cut 命令
- 2. printf 命令
- 3. awk 命令
- 4. sed 命令
- 5. sort 命令
- 6. wc命令
- 7.Linux字串截取命令
1.cut 命令
cut [選項] 檔案名
-f 列號 #提取第幾列(分隔符默認為\t)
-d 分隔符 #指定分隔符
例如:cut -f 2 a.txt #截取檔案a.txt內容的第二列(列號從1開始)
cut -f 2,4 a.txt #截取檔案a.txt內容的第二列和第四列
cut -d “:” -f 1,3 /etc/passwd #截取檔案passwd檔案的第1列和第三列,以:分割取其中的第一列和第三列
2. printf 命令
printf ‘輸出型別 輸出格式’ 輸出內容
輸出型別:
%ns 輸出字串,n是數字,指代輸出幾個字符
%ni 輸出整數,n是數字,指代輸出幾個數字
%m.nf 位數和小數位數,例如:%8.2f 代表輸出8位數,其中2位是小數,6位是整數
輸出格式:
\a 輸出警告聲音
\b 輸出退格鍵,也就是BackSpace鍵
\f 消除螢屏
\n 換行
\r 回撤
\t 水平制表符
\v 垂直制表符
舉例:
printf ‘%s %s %s\n’ 1 2 3 4 5 6 #表示每三個位一組輸出,并加換行符
printf ‘%s\t%s\t%s\t’ $(cat a.txt) #表示以4列的形式輸出
3. awk 命令
awk.‘條件1{動作1}條件2{動作2}…’ 檔案名
awk ‘{printf $2 “\t” $6 “\n”}’ a.txt #輸出檔案a.txt的第二列和第6列
4. sed 命令
sed [選項] ‘[動作]’ 檔案名 #說明:動作必須用引號引起來
選項:
-n 一般sed命令會把所有資料都輸出到螢屏,如果加入此選擇,則只會把經過sed命令處理的行輸出到螢屏,
-e 允許對輸入資料應用多條sed命令編輯
-i 用sed的修改結果直接修改讀取的資料的檔案,而不是修改螢屏輸出
動作:
a\ 追加,在當前行后添加一行或多行,添加多行時除最后一行外,每行末尾需要用"\"代表資料未完結,
c\ 行替換,用c后面的字符替換原資料行,替換多行時除最后一行外,每行末尾需要用"\"代表資料未完結,
i\ 插入,在當前插入一行或多行,插入多行時,除最后一行外每行末尾需用"\"代表資料未完結,
d 洗掉,洗掉指定的行
p 列印,輸出指定的行
s 字串替換,用一個字串替換另外一個字串,格式為"行范圍 s/舊字串/新字串/g"
sed可以接收管道符的輸出結果
舉例:
sed '2p' a.txt #輸出第2行后,又把所有內容輸出一遍
sed -n '2p' a.txt #只輸出第二行
sed '2,4d' a.txt #洗掉第2到4行,只洗掉螢屏輸出,不會更改檔案本身的內容
sed '2a hello' a.txt #在第二行插入一行 hello
sed '2i hello' \
word' a.txt #在第二行前插入多行 hello 一行 word一行
sed '2c no person' a.txt #用no person 替換第二行
sed '4s/99/55/g' a.txt #把第4行的99替換為55
sed -i '4s/99/55/g' a.txt #把第4行的99替換為55,修改的是原檔案而不是螢屏輸出
sed -i 's/99/55/g' a.txt #s前不加行號時表示替換整個檔案中匹配的字串
sed -e 's/Liming//g;s/Gao//g' a.txt #-e表示允許多個條件執行,把Liming替換為空,把Gao替換為空
5. sort 命令
sort [選項] 檔案名 #排序
選項:
-f 忽略大小寫
-n 以數值型進行排序,默認使用字串型排序
-r 反向排序
-t 指定分隔符,默認分隔符是制表符
-k n[,m] 按照指定的欄位范圍排序,從第n欄位開始,m欄位結束(默認到行尾)
6. wc命令
wc [選項] 檔案名 #統計
選項:
-l 只統計行數
-w 只統計單詞數
-m 只統計字符數
7.Linux字串截取命令
假設有變數 var=http://www.google.com/test.htm
1、 # 號截取,洗掉左邊字符,保留右邊字符,
echo ${var#//}
其中 var 是變數名,# 號是運算子,// 表示從左邊開始洗掉第一個 // 號及左邊的所有字符
即洗掉 http://
結果是 :www.google.com/test.htm
2、 ## 號截取,洗掉左邊字符,保留右邊字符,
echo ${var##/}
##/ 表示從左邊開始洗掉最后(最右邊)一個 / 號及左邊的所有字符
即洗掉 http://www.google.com/
結果是 test.htm
3、 %號截取,洗掉右邊字符,保留左邊字符
echo ${var%/}
%/ 表示從右邊開始,洗掉第一個 / 號及右邊的字符
結果是:http://www.google.com
4、 %% 號截取,洗掉右邊字符,保留左邊字符
echo ${var%%/}
%%/ 表示從右邊開始,洗掉最后(最左邊)一個 / 號及右邊的字符
結果是:http:
5、 從左邊第幾個字符開始,及字符的個數
echo ${var:0:5}
其中的 0 表示左邊第一個字符開始,5 表示字符的總個數,
結果是:http:
6、 從左邊第幾個字符開始,一直到結束,
echo ${var:7}
其中的 7 表示左邊第8個字符開始,一直到結束,
結果是 :www.google.com/test.htm
7、 從右邊第幾個字符開始,及字符的個數
echo ${var:0-7:3}
其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數,
結果是:test
8、 從右邊第幾個字符開始,一直到結束,
echo ${var:0-7}
表示從右邊第七個字符開始,一直到結束,
結果是:test.htm
注:(左邊的第一個字符是用 0 表示,右邊的第一個字符用 0-1 表示)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263013.html
標籤:其他
