首页 > 代码库 > Linux [文本处理]
Linux [文本处理]
cut -- 将行根据需求分成指定的片段
常用参数:
-d 以。。。为分割符 -d: 以:分割行(类似于python中的split)
-f 得到分割后的某个列 -f1-3 得到分割后的第1个到第3个列 (即1,2,3列,这里面是从1开始的,而不是0)
-c 指定位置字符 -c1 得到行的第一个字符
grep -- 查找文本内容
常用参数:
-i 忽略大小写
-n 显示行数
-An 显示查找到的字符的后(After)n行
-Bn 显示查找到的字符的前(Before)n行
-v 显示不含有该字符的行
例子:
grep yechengzhou /特长/passwd | cut -d: f6 (得到yechengzhou用户的家目录)
wc -- 统计文本信息
-l 行
-w 单词
-m 字符
-c 字节
不加参数 wc filename 得到结果为
行数 单词数 字符数 文件名
sort -- 对文本内容进行排序
默认 根据首字母排序
参数:
-r 倒序
-n 指定基于数字进行排序
-f 忽略大小写
-u 删除重复行 (or find | uniq 只能删除相邻的重复行)
-t c 根据c为分隔符将行分割成列,并将列排序
diff -- 比较两个文件的区别
-i 忽略大小写
-b 忽略空格数量的变化
-u 统一显示比较信息(一般用于生成patch)
tr -- 对文本进行处理, 只针对标准输出,如果要修改文件内容需要重定向
tr -d "TMD" < filename 删除文本中的TMD 输出, 文件内容不变
tr ‘abc‘ ‘ABC‘ < filename 将文件中的小写a,b,c替换成A,B,C, 文件内容不变
-s , 删除所有 str_from 重复出现字符序列,只保留一个 ,即重复字符串压缩为一个
【一个很经典的应用就是把不规律的空格缩减为一个空格: tr -s ‘ ‘ filename】
sed -- 搜索替换,使用正则表达式处理, 替换后标准输出
sed 正则 文件
例子:
sed "1,50s/linux/unix/g" filename 将filename中的1-50行的所有linux替换成Unix (/g代表所有, 不加/g只替换第一个)
sed -f sedfile filename根据sedfile中的内容进行sed操作(比如说sedfile 的内容是 "s/linux/unix/g" 那么就是将filename中的所有linux替换成unix)
sed -e "s/linux/unix/g" -e "s/windows/OS/g" filename 同时做多个替换