当前位置:首页 » 《随便一记》 » 正文

【持续更新】一些linux命令积累——字符串处理相关_机器学习杂货铺1号店

22 人参与  2021年11月09日 08:43  分类 : 《随便一记》  评论

点击全文阅读


工作中遇到的数据很多都是按照字段进行组织的,分隔符通常是制表符\t,如下所示:

seg_A	seg_B	seg_C
...
...
...

这种格式可以组织各种数据,比如日志文件,训练/测试数据,用户行为数据等,这些数据都是字符串的形式,并且按照每行一个样本,每列一个字段的形式进行储存。linux中有很多工具和命令处理此类数据非常方便,这里简单笔记下。

打印某一列

采用awk可以做到。

cat your_file | awk '{print $1}' # 打印第一列
cat your_file | awk '{print $NF}' # 打印最后一列

查找字符串

采用sed, grep ,大杀器awk当然也可,不过没必要。

cat your_file | sed -n '/string_pattern/p'
cat your_file | grep "your_string"
cat your_file | grep -E "string_pattern"

新增一列

采用awk, 假如原本的文件如:

# file: your_file
1	2	3
4	5	6
7	8	9

那么在最后一列添加上字符A,可以用以下脚本

cat your_file | awk '
BEGIN{string="A"}
{
	for(i=0; i<=NF; i++)
	{
		printf($i);
		printf("\t");
	}
	printf("%s\n", a);
}'

其输出结果是:

1	2	3	A
4	5	6	A
7	8	9	A

我们发现awk的可执行代码非常类似于C语言,并且awk是对每一行为单位进行处理的,这意味着以上的代码会对文件中的每一行进行相同的操作。

替换字符串

替代字符串这个操作可以由非常多的工具进行,比如sed, tr, 万能的awk等。个人喜欢用sed

cat your_file | sed -n 's/old_string/new_string/p'

大小写字母转换

tr命令适合用于字符串的转换,压缩和删除。

echo "AbC" | tr -t [A-Z] [a-z]

输出为abc

数据筛选

有时候需要对每一列的某些数值指标(离散的或者连续的)进行筛选,可以采用awk轻松搞定。原数据如:

# file: your_file
data_a	data_b	1.0
data_a	data_b	0.5
data_a	data_b	0.8
data_a	data_b	0.3

那么挑选所有最后一列大于0.5的行,可以

cat your_file | awk '$3>0.5'

输出为:

data_a	data_b	1.0
data_a	data_b	0.8

也可以选择同时筛选多个条件,通过与(&&)或(||)非(!)连接起来

cat your_file | awk '$3>0.5 && $3<0.8'
cat your_file | awk '$3<0.5 || $3>0.8'
cat your_file | awk '$3!=0'

点击全文阅读


本文链接:http://zhangshiyu.com/post/30678.html

字符串  数据  都是  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1