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

# 将第一例的空值换成"中国"
awk  'BEGIN{FS=","} {print $1}' henu.txt | sed 's/^s*$/"中国"/g' > new_henu.txt

# 在vim中将空行替换为"中国"
:1,$s/^s*$/中国/g

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

3) 解决:“ $'\r': command not found”解决方法,原因是windows和Linux系统换行不同
sed -i 's/\r//' henu.txt

4 查找字符grep

#查找“河南大学”
cat henu.txt | grep '河南大学' >new_henu.txt

#正则查找,查找以“大”开头,以“语”结束的字符
cat henu.txt | grep '大.*语' >new_henu.txt

5 其他

1)cut切割字符
# 以“,”切割文件并取出第1列
# sort排序的时候注意默认是按照字典的方式排序,如果按照数字时则必须加上-n
# uniq去除重复,只能去除相邻的重复,所以要先排序,后去除重复
cat  henu.txt |cut -d ',' -f 1| sort | uniq -c | sort -rn -k1 > new_henu.txt


2)查看制表符的命令\t
cat -T file_name

# 在线编辑
# (英文字母L的小写,不是管道|)
sed -n l file_name

# 删除字符
tr -d 'delete_char'

3)删除第2列相同值的行
cat henu.txt | sort -t "," -k2,2 -V | sort -t "," -uk2,2 -V > new_henu.txt

文件内容如下:

2,河南大学,软件工程

3,河南大学,美术
1,河南大学,计算机
4,河南大学,体育
5,河南大学,物理
13,河南科技大学,物理
6,河南大学,化学
1,河南大学,计算机
7,河南大学,计算机
8,河南科技大学,计算机
1,河南大学,计算机
9,河南理工学院,
10,河南工学院,
11,河南大学,英语
12,河南大学,语文
13,河南科技大学,物理
14,河南科技大学,化学
15,河南大学,计算机
13,河南科技大学,物理
13,河南科技大学,物理
16,河南大学,软件工程

参见《鸟哥的私房菜》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值