# nl行号命令
nl tab.txt
# sort 行排序
sort 1.txt 「 字符排序 」
sort -n 2.txt
-n 数值排序
-M 识别三字符的月份名
-t 分隔符
-k 排序的字段
-r 降序
-u 去重
du -k | sort -nr 「 按文件大小倒序 」
sort -t ':' -k 3 -n /etc/passwd 「 用户ID排序 」
cut -d: -f3 passwd | sort -n
sort -t: -k3 -nr passwd
last | cut -d' ' -f1 | sort -u
# uniq 去重
last | cut -d' ' -f1 | sort | uniq -c
-c 统计重复次数
# wc统计
wc passwd
格式: [-l 行数] [-w 单词数] [-c 字符数]
ls -1 | wc -l
# tr字符转换
简写:translate
tr 'a-z' 'A-Z' < passwd 「 小写转大写 」
tr 'a-z' 'A-Z' < passwd > PASSWD 「 另存为 」
cat PASSWD | tr 'A-Z' 'a-z'
cat passwd | tr 'a-z' 'A-Z’
tr -d ':' < PASSWD
-
-d 「 delete 」
cat /etc/passwd | grep '^root' | tr -d ':'
# tail 尾行
tail -7 last.txt
tail last.txt 「 默认尾10行 」
cat -A tab.txt 「 --show-all & 所有字符」
11^I22^I33$ 「 <Tab> 」
aa^Ibb^Icc$
linux^I^Imysql^I^Iphp^I^Iapache^I^Inginx$
# col将 tab键替换成空格
cat tab.txt | col -x 「 tab替换成空格 」
man col | col -b > test.txt
-
-b 仅保留反斜杠最后保留的字符,转存文本文件
-
-x 将tap替换成空格
# expand将 tab键替换成空格
cat tab.txt | expand | cat -A 「 tab替换成空格 」
# paste 以 [Tap] 键合并行
paste 1.txt 2.txt | cat -A
date | paste 1.txt 2.txt - 「 减号 standard input 」
paste 1.txt 2.txt
a a 1 1
b b 2 2
c c 3 3
head /etc/passwd > passwd
head /etc/group > group
paste passwd group
root:x:0:0:root:yyyyyyyyyyyyyyy root:x:0:
bin:x:1:1:bin:/byyyyyyyyyyyyyyy bin:x:1:
daemon:x:2:2:daeyyyyyyyyyyyyyyy daemon:x:2:
adm:x:3:4:adm:/var/adm:/yyyyyyy sys:x:3:
lp:x:4:7:lp:/var/yyyyyyyyyyyyyy adm:x:4:
sync:x:5:0:sync:/yyyyyyyyyyyyyy tty:x:5:
shutdown:x:6:0:shutdoyyyyyyyyyy disk:x:6:
halt:x:7:0:halt:/sbinyyyyyyyyyy lp:x:7:
mail:x:8:12:mail:/varyyyyyyyyyy mem:x:8:
operator:x:11:0:operayyyyyyyyyy kmem:x:9:
# join智能拼接行
head /etc/group | sort > group
cat group
cat passwd
join -t: passwd group
-t 分隔符,默认第一列为关联字段
adm:x:3:4:adm:/var/adm:/yyyyyyy:x:4:
bin:x:1:1:bin:/byyyyyyyyyyyyyyy:x:1:
daemon:x:2:2:daeyyyyyyyyyyyyyyy:x:2:
lp:x:4:7:lp:/var/yyyyyyyyyyyyyy:x:7:
root:x:0:0:root:yyyyyyyyyyyyyyy:x:0:
cat 1.txt
1:2:3:4:5:6
cat 2.txt
5:6:7:8:9:0
join -t: -1 5 1.txt -2 1 2.txt 「 -1 5 第一个文件的第5列 和-2 1 第二个文件的第1列 关联 」
5:1:2:3:4:6:6:7:8:9:0
#xargs 文件列表
touch file{1,2,3}
ls file*
-
file1 file2 file3
find . -name 'file*' | ls -l 「 ls -l . 」
find . -name 'file*' |xargs ls -l
find ~/Desktop/ -name '*.pdf' -print0 | xargs -0 du -h
-
-print0 输出文件名并以null结尾
-
-0 输入文件名以null结尾
# 减号
tar cf - /etc | tar xf -
- 代表包名