uniq
-i | 忽略大小写 |
-c | 进行计数 |
-fN | 前 N 个区域被忽略 |
wc
行 字数 字符数
-l | 仅列出行 |
-w | 仅列出多少字 |
-m | 多少字符 |
cut
-d | 后接分割字符,与-f 一起使用 |
-f | 用-f 去第几段 |
-c | 以字符的单位取出固定字符区间 |
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:
echo $PATH | cut -d ‘:‘ -f2
/usr/bin
echo $PATH | cut -d ‘:‘ -f2,5
/usr/bin:/usr/sbin
echo $PATH | cut -d ‘:‘ -f2-5
/usr/bin:/bin:/usr/local/sbin:/usr/sbin
echo $pATH | cut -c1-4
/usr/lo
sort
-f | 忽略大小写的差异 |
-b | 忽略最前面的空格符部分 |
-M | 以月份的名字来排序. |
-n | 使用纯数字 |
-r | 反向排序 |
-u | uniq,相同的数据,仅出现一行代表 |
-t | 分隔符,默认是 tab |
-k | 以那个区间(field)来排序(与-t 搭配) |
-c | 测试文件是否已经分类 |
-m | 合并 2 个分类文件 |
-u | 删除所有复制行 |
-o | 接存储的文件名 |
对-k, 也可以是 -k1 -k2, 表示的是先以 第二段來排序, 如果相同就以第二段
tr
-d | 删除字符 |
-s | 删除重复的字符 |
cat a.txt | tr -d ‘\r‘ > b.txt
修改 dos 文件的换行符 ^M
echo "hello world" | tr [a-z] [A-Z]
HELLO WORLD
echo "hello world" | tr -d o
hell wrld
echo "hello world" | tr o a
hella warld
echo "helllllo world" | tr -s l
helo world
tee 双重导向
-a | 以类加的方式将数据加入 file 中 |
col
-x | 将 tab 转换成对等的空格键 |
-b | 在文字内有反斜杠/时,仅保留反斜杠刚最后接的那个字符 |
cat -A FILE 会出现很多I 符号(tab), 就可以使用转换成空格功能
join
2 个档案中, 有相同的数据的那一行, 才加在一起.
-t | join 默认以空格分隔数据, 并且比对[第一个字段]的数据 |
-i | 忽略大小写的差异 |
-o | join -o 1.1 2.2 FILE1 FILE2,只取 1 2 |
-j | join -j1 3 -j2 2 FILE1 FILE2, 取 3 和 2 部分 |
-1 | 表示第一个档案要用那个字段来分析 |
-2 | 表示第二个档案要用那个字段来分析 |
cat a
111 2222
cat b
22222 2222
cat c
111 3333
join a b
没有结果
join -1 2 a -2 2 b
2222 111 3333
join -1 2 b -2 2 b
2222 3333 111 如果第一个文件的第二个字段和第二个文件的第二个字段相同就 join
join -1 1 a -2 1 c
111 2222 3333
join -t ‘:‘ /etc/passwd /etc/shadow
将 2 个档案第一字段相同者整合成一行
join -t ‘:‘ -1 4 /etc/passwd -2 3 /etc/group
将第一个文件的第四个字段和第二个文件的第三个字段比较,相同就整合成一行. 在使用 join 之前, 档案应该要实现经过排序,否则有些比对的项目会被忽略.
paste
-d | 后接分隔字符, 默认是[tab] |
-s | 将文件变成一行 |
paste /etc/passwd /etc/shadow cat /etc/group | paste /etc/passwd /etc/shadow - | head -n 3
split
-b | 接欲分割成的档案大小,可加单位 b k m |
-l | 以行数来进行分割 |
PREFIX 代表前导符的意思,可作为分割档案的前导文字.
split -b 300k /etc/termcap termcap
ll a.txt
-rw-rw-r-- 1 xiang xiang 3.7K Apr 27 15:45 a.txt
split -b 2k a.txt a.txt && ls
a.txt a.txtaa a.txtab
split -b 2k a.txt a && ll
total 40K -rw-rw-r-- 1 xiang xiang 2.0K Apr 27 15:45 aaa -rw-rw-r-- 1 xiang xiang 1.7K Apr 27 15:45 aab
xargs
-0 | 如果输入的 stdin 有特殊字符,例如 `, \, 空格键等等, 将他还原成一般字符 |
-e | EOF 后面可以接一个字符串,当 xargs 分析到这个字符串时,就会停止继续工作! |
-p | 在执行每个指令的 argument 时,都会询问使用者; |
-n | 后面接次数,每次 command 指令执行时,使用几个参数。 |
find -exec COMMAND {} \;
操作是将前面找到的都作为一个参数來执行,而通过 xargs 就会将他们分解
find -type f | xargs file
查看文件的属性
ls | xargs cat | grep "cmov"
通过列出所有的文件, 然后 cat 再用 grep 查找.
expand
-t 后面可以接数字,将 tab 转换成空格 grep ‘^MANPATH‘ /etc/man* | head - n3 | cat -A grep ‘^MANPATH‘ /etc/man* | head -n 3 | expand -t 6 | cat -A
经过 expand 之后就没有I 了, 因为被转换成了空格.
unexpand 将空格转换成 tab
grep ‘^MANPATH‘ /etc/man_db.conf | head -n 3| expand -t 12| unexpand -t 1 | cat -A
时间: 2024-10-11 14:08:36