Linux中文本处理命令,本文以“henu.txt”文件为例
1、wc命令:对文件行、字数(单词)、字符数做简单统计
参数(-l:仅列出行; -w:仅列出多少字(英文单字); -m:多少字符;)
1)查看文件全部参数
more henu.txt
wc henu.txt
其中16 16 417 分别代表行数、一行中的字符数、总的字符数
2)统计文件行数
wc -l henu.txt
“wc”命令主要统计英文的字符,建议使用此命令查看文件中的行数
2、文件内容含有条件的筛选awk
# FS=",":以","分割行, $1:显示第一列,NR:当前所在的行,NF当前行分割的字段数
awk 'BEGIN{FS=","} {print $1 "\t" $2 "\t" NR "\t" NF}' henu.txt
# 筛选第一列->排序->去重并计算重复次数->按照重复次数排序->重定向到新文件中
awk 'BEGIN{FS=","} {print $1}' henu.txt | sort | uniq -c | sort -rn -k1 > new_henu.txt
3、替换字符和删除行sed
1)替换:sed 's/旧字符/新字符/g' ,特殊字符要使用转义
其中正则表达式中,“.”表示任意字符,“*”重复多次
# 表示删除file_name文件中的括号里面的内容和括号,并用空代替
cat file_name | sed 's/(.*)//g' | sed 's/\[.*\]//g'
# 将“河南大学”替换为“河大”
cat henu.txt | sed 's/'河南大学'/'河大'/g' > new_henu.txt
2)删除行
#删除第一行和第二行
cat henu.txt | sed '1,2d' >new_henu.txt
4、查找字符grep
#查找“河南大学”
cat henu.txt | grep '河南大学' >new_henu.txt
#正则查找,查找以“大”开头,以“语”结束的字符
cat henu.txt | grep '大.*语' >new_henu.txt
5、其他
1)cut切割字符
# 以“,”切割文件并取出第1列
cat henu.txt |cut -d ',' -f 1| sort | uniq -c | sort -rn -k1 > new_henu.txt
2)sort排序的时候注意默认是按照字典的方式排序,如果按照数字时则必须加上-n
uniq去除重复,只能去除相邻的重复,所以要先排序,后去除重复
3)查看制表符的命令\t
cat -T file_name
sed -n l file_name(英文字母L的小写,不是管道|)
tr -d 'delete_char'
文件内容如下:
2,河南大学,软件工程
3,河南大学,美术
1,河南大学,计算机
4,河南大学,体育
5,河南大学,物理
13,河南科技大学,物理
6,河南大学,化学
1,河南大学,计算机
7,河南大学,计算机
8,河南科技大学,计算机
1,河南大学,计算机
9,河南理工学院,
10,河南工学院,
11,河南大学,英语
12,河南大学,语文
13,河南科技大学,物理
14,河南科技大学,化学
15,河南大学,计算机
13,河南科技大学,物理
13,河南科技大学,物理
16,河南大学,软件工程
参见《鸟哥的私房菜》
|