1. tr 按列替換 刪除輸入中的 "{" 和 "}" 將文件testfile中的小寫字母全部轉換成大寫字母 2. cut : cut [ b] [file] 列切分 cut 命令從文件的每一行剪切位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。 如果不指定 File 參數,cut 命令將讀取 ...
1. tr 按列替換
echo "{123}" | tr -d '{}'
刪除輸入中的 "{" 和 "}"cat testfile |tr a-z A-Z
將文件testfile中的小寫字母全部轉換成大寫字母
2. cut : cut [-b] [file] 列切分
cut 命令從文件的每一行剪切位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。
如果不指定 File 參數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。
echo "123,456" | cut -d "," -f 1
以","分隔截取輸入中的每行的第一部分內容輸出.who | cut -b 3
以位元組為分隔, 輸出每行的第三個位元組.-c
是以字元為分隔count=$(echo -e "${line}" | cut -f 2)
其中,line
中字元是以tab作為分隔符!
3. chown, chgrp, chmod 許可權
sudo chgrp root *
修改當前目錄下所有文件為root組
sudo chown root *
修改當前目錄下所有文件的owner為root
sudo chmod 777 -R dir
遞歸修改dir的許可權為777
sudo chmod 755 file.sh
修改file.sh為任何人可執行許可權
4. sudo
sudo -l
查看當前用戶運行命令許可權sudo -u <user> command
使用user用戶執行命令command
5. uniq 去重
uniq -c file
在每行的旁邊增加重覆的數量。
6. nl 輸出前加行號
nl file
在輸出的內容前加行號nl -b a file
遇到空行,也加行號。nl -n rz -w 3 file
行號3位對其,前面補0.
7. shuf 打亂文件順序
shuf sort_file -o rsort_file
8. split 將文件切分
split -5000 file
或split -l 5000 file
將file按行切分成多個文件, 文件最大行為5000split -5000 -d file
以數字作為尾碼,預設:xaa,xab,xac
, 現在x00,x01,x02
split file.txt -b 10M
將文件file.txt平均切分成10M
合併文件
cat x* > file.txt
將以x
開頭的所有文件合併到file.txt`中cat file1 file2 > file3
將file1和file2合併保存到file3中.
文件內容順序, 按照file1+file2的順序保存到file3
模式切分csplit
將文本文件file以第 2 行為分界點切割成兩份,命令: csplit testfile 2
文件求交,差,補
cat a b | sort | uniq > c
# c 是 a 並 b
cat a b | sort | uniq -d > c
# c 是 a 交 b
cat a b b | sort | uniq -u > c
# c 是 a - b
9. sed按行操作文本(大文本操作)
大文本數據修改,編輯,保存,不能用編輯器打開,可以藉助sed
對大文件進行修改
sed編輯行以1為起始index!
詳解
-e
多次編輯
nl file | sed -e '3,$d' -e 's/bash/blueshell/'
刪除第三行到最後一行,然後將1-2行中匹配bash
的字元串替換成blueshell
字元串
sed -e 4a\newLineContent file
在第四行後天添加一行內容newLineContent
-n
僅顯示script處理後的結果。
nl /etc/passwd | sed -n '5,7p'
僅列出文件的5-7行。
nl /etc/passwd | sed -n '/root/p'
僅列出匹配root的行
-i
直接編輯源文件危險動作
sed -i 's/\.$/\!/g' file
將file的最後一行中的.
替換成!
sed -i '$a # This is a test' file
在最後一行,再添加一行內容:# This is a test' file
nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}'
首先匹配所有bash
行,然後執行{}
裡面的一組動作,替換bash為blueshell,p列印,q退出!
-e
接的動作:
a
:新增, 在當前行的下一行添加,是新的一行i
:插入, 在當前行的上一行插入,是新的一行c
:取代d
:刪除, 後面沒有內容;
nl file | sed '2,5d'
刪除第二到五行!
sed '2d' file
刪除第二行
nl file | sed -n '/root/p'
刪除所有行中包含root的行!
p
:列印列。通常 p 與參數 sed -n 一起用s
:替換,/要被取代的字串/新的字串/g
使用
查找行號
grep -n --color '您的司機賬戶已被凍結' outbox.csv
刪除對應行號保存:
sed -e 5d file1 > ./file2
刪除第五行 並保存到當前目錄下的file2文件中。刪除匹配項:
cat file1 | sed '/hello/d' > ./file2
刪除所有行中包含hello
字元串的行保存。
nl file1 | sed '/hello/d' > ./file2
在每行內容前加一個行號,保存到文件中!
10. 只輸出一行中匹配的字元串.
語法: grep -o 'regex'
less file* | grep type | grep -o 'user\[.*\]user_id' | grep -o '\[.*\]' | sort | uniq
以file
開頭的所有文件中,每行包含type
的字元串,提取字元串中以user[.*]user_id
形式存在[]
中的內容!