Linux基本文本处理
本文内容涉及命令有sort、uniq、cut、join、head、tail、grep、wc、fmt、fold、pr、tr
- sort(排序)
- option
- -d 使用字典顺序排序,比较中只考虑字母、数字和空格,忽略特殊字符
- -k 指定排序关键字
- -r 颠倒排列的顺序
- -t 指定分隔符
- -u 对相同的行只保留一行
- -n 按算术值对数字字段排序
- -f 比较前把所有小写字母改成大写
- example
- sort -t: -k3 -nr /etc/passwd (按用户id对passwd中的用户进行逆序排序)
- note
- sort命令是不稳定的排序,(稳定:两个相同的记录,经过排序后位置不变)
-
- uniq(文本去重)
- option
- -c 在输出行前面加上每行在输入文件中出现的次数
- -d 仅显示重复行
- -u 仅显示不重复的行
- example
- note
- 在sort排序之后,使用uniq,因为uniq只会检查记录附近的值是否相同
-
- wc(统计文本行数、字数、以及字符数)
- option
- -c 显示字符个数
- -w 参数显示单词的个数
- -l 显示文本行的行数
-
- example
- 表示40行,65个单词(以空格为分隔符),1908个字符
- -l,-w,-c 参数
- find /etc -iname "*.conf" | wc -l #显示/etc文件下conf文件的个数
- grep -c "bash" /etc/passwd #grep 中使用 -c 统计行数
- wc /etc/*rc #可以同时统计多个文件
-
- note
- 不同的locale会影响wc命令解释字节序列时的字符/单词分隔器
-
-
- pr(打印,将大个文件分隔为多个页面,并为每个页面加标题)
- option
- -h 打印页标题
- -f 以制表符替代空格
- -c [column] 文本输出的列数
- -t 不显示标题
-
- example
- note
- pr -5 -ft test #-5的作用与-c5作用相同,如下图,效果一样(-c5中间不能加空格,否则报错)
-
-
- fmt
- option
- -w 行宽
- -s 只拆开字数超出字符串的列,不合并字数不足的列
- -c 每段前两列缩排
-
- example
- note
-
- fold
- option
- -w 行宽,强硬截断,有可能截断单词
-
- example
- note
-
- head、tail(取头、尾)
- option
- -Count 指定显示的行数 #-5显示5行
-
- example
- note
-
- cut
- option
- -d 分隔符
- -f 显示的列
-
- example
- note
-
- join(连接,使具有相同key值的记录信息连到一起)
- option
- -a 指定以哪个文件为主 #-a1 会以1文件为主,2中有但1 中文件没有的不显示
-
- example
- 相同字段join
- 以1文件为主或以2文件为主
-
- note
-
- tr(文本替换)
- option
- tr str1 str2 将str1所包含的每一个字符替换成str2中相同位置上的字符
- -d 删除str1包含的每个字符
- -s 在重复字符序列中除去第一个字符以外的所有字符
-
- example
- tr '{}' '()' < textfile > newfile
- tr '{}' '\[]' < textfile > newfile
- tr -d '\0' < textfile >newfile #删除所有空字符
- tr -s '\n' < textfile > newfile #以单独的换行替换每一序列的一个或多个换行
-
- note
-
- 其它选择
- perl
- sed
- awk
- python
-
欢迎访问我的个人主页: www.forgerui.tk