【拔刀吧少年】之sort uniq tr cut eval常用命令
sort uniq tr cut eval
- 一、排序命令——sort
- 1、格式
- 2、常用選項
- 二、去除重復行操作命令——uniq
- 1、格式
- 2、常用選項
- 3、示例
- 三、字符轉(zhuǎn)換命令——tr
- 1、格式
- 2、常用選項
- 3、參數(shù)
- 4、示例
- 四.數(shù)組排序新方法
- 五、顯示、連接文件命令——cut
- 1、格式
- 2、常用選項
- 3、示例
- 六、eval命令
一、排序命令——sort
以行為單位對文件內(nèi)容進行排序,也可以根據(jù)不同的數(shù)據(jù)類型來排序
1、格式
2、常用選項
選項 說明
-f 忽略大小寫,默認會大寫字母排在前面
-b 忽略每行前面的空格
-n 按照數(shù)字進行排序
-r 反向排序
-u 等同uniq,表示相同的數(shù)據(jù)僅顯示一行,去重
-t 指定字段分隔符,默認使用tab鍵分隔
-k 指定排序字段
-o <輸出文件> 將排序后的結(jié)果轉(zhuǎn)存至指定文件
sort -n testfile2
sort -t ‘:’ -k 3 -n /etc/passwd
du -a | sort -nr -o du.txt
3、示例
二、去除重復行操作命令——uniq
用于報告或者忽略文件中連續(xù)的重復行,常與sort命令結(jié)合使用
1、格式
2、常用選項
選項 說明
-c 進行計數(shù),并刪除文件中重復出現(xiàn)的行
-d 僅顯示連續(xù)的重復行
-u 僅顯示出現(xiàn)一次的行
uniq testfile3
sort -n testfile3 | unig -C
3、示例
三、字符轉(zhuǎn)換命令——tr
常用于對來自標準輸入的字符進行替換、壓縮和刪除
1、格式
2、常用選項
選項 說明
-c 保留字符集1的字符,其他的字符(包括換行符\n)用字符集2替換
-d 刪除所有屬于字符集1的字符
-s 將重復出現(xiàn)的字符串壓縮為一個字符串,用字符集2 替換 字符集1
-t 字符集2 替換 字符集1,不加選項同結(jié)果
3、參數(shù)
字符集1:
指定要轉(zhuǎn)換或刪除的原字符集。當執(zhí)行轉(zhuǎn)換操作時,必須使用參數(shù)”字符集2“指定轉(zhuǎn)換操作時,必須使用參數(shù)”字符集2“指定轉(zhuǎn)換的目標字符集。但執(zhí)行刪除操作時,不需要參數(shù)”字符集2“
字符集2:
指定要轉(zhuǎn)換成的目標字符集
4、示例
刪除空行
echo -e “aa\n\n\n\n\nbb” | tr -s “\n”
cat testfile5 | tr -s “\n”
把路徑變量中的冒號 “:”,替換成換行符 “\n”
echo $PATH | tr -s “:” “\n”
echo -e “aa\n\n\n\n\nbb” | tr -s “\n” “:”
刪除Windows文件“造成"的’^M’字符
cat abc.txt | tr -s “\r” “\n” > new_file
或
cat abc.txt | tr -d “\r” > new_file
Linux中遇到換行符("\n")會進行回車+換行的操作,回車符反而只會作為控制字符("^M")顯示,不發(fā)生回車的操作。而windows中要回車符
+換行符("\r\n")才會回車+換行,缺少一個控制符或者順序不對都不能正確的另起一行
cat -v abc.txt
dos2unix abc.txt
四.數(shù)組排序新方法
echo ${array[*]} | tr ’ ’ ‘\n’| sort-n > file
a=0
for i in (catfile)doarray[(cat file) do array[(catfile)doarray[a]=KaTeX parse error: Expected 'EOF', got '#' at position 11: i let a++ #?array+=(i)
done
五、顯示、連接文件命令——cut
顯示行中的指定部分,刪除文件中指定字段
1、格式
2、常用選項
選項 說明
-b 以字節(jié)為單位進行分割 ,僅顯示行中指定直接范圍的內(nèi)容
-c 以字符為單位進行分割 , 僅顯示行中指定范圍的字符
-d 自定義分隔符,默認為制表符”TAB”
-f 顯示指定字段的內(nèi)容 , 與-d一起使用
-n 取消分割多字節(jié)字符
–complement 此選項用于排除所指定的字段
–out-delimiter 更改輸出內(nèi)容的分隔符
cut -d ‘:’ -f 1 /etc/passwd
grep ‘/bin/bash’ /etc/passwd | cut -d ‘:’ -f 1-4,6,7 #以-分隔的開始字段和結(jié)束字段指定字段的范圍
grep ‘/bin/bash’ /etc/passwdIcut -d ‘: ’ --complement -f 2 #排除第二個字段
cut -d ‘:’ -f1, 7 --output-delimiter=’ /etc/ passwd #輸出分隔符使用空格分隔
3、示例
i=123456789
echo $i | cut -b 1-3 #起始位置從1開始
123
echo ${i:0:3} #起始位置從0開始
expr substr $i 1 3
#起始位置從1開始
六、eval命令
加上eval時,shell會執(zhí)行命令之前掃描兩次。eval命令將首先會先掃描命令行進行所有命令適用于那些一次掃描無法實現(xiàn)其功能的變量。該命令對變量進行兩次掃描。
示例
總結(jié)
以上是生活随笔為你收集整理的【拔刀吧少年】之sort uniq tr cut eval常用命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【拔刀吧少年】之awk文本和数据处理编程
- 下一篇: 【拔刀吧少年】之Expect 自动化控制