首页 > 代码库 > Linux 笔记--文本

Linux 笔记--文本

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反向排序
-uuniq,相同的数据,仅出现一行代表
-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 个档案中, 有相同的数据的那一行, 才加在一起.

-tjoin 默认以空格分隔数据, 并且比对[第一个字段]的数据
-i忽略大小写的差异
-ojoin -o 1.1 2.2 FILE1 FILE2,只取 1 2
-jjoin -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 有特殊字符,例如 `, \, 空格键等等, 将他还原成一般字符
-eEOF 后面可以接一个字符串,当 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

Linux 笔记--文本