导航
  • 主页
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux
  • 问答

求问如何最后一列数据把缺失值替换为?

所念皆山海 北京大學 2019-09-27 03:24:04
大佬们好,我有上百万数据是这样的:
1,2,3,4,5,6,7,8,
想替换成
1,2,3,4,5,6,7,8,?
请问使用sed或者awk命令(其他也行)应该怎么操作?
感谢~
...全文
52 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperDay 2019-09-27
匹配 0 次或多次 * 匹配 0 次或多次匹配符 * 可以匹配 0 次或多次出现。其实就是相当于占位符。 例如下面的范例,可以匹配 ca, cat, catt 等等 范例 $ echo -e "ca\ncat\ncatt" | awk '/cat*/' 运行上面的 awk 命令,输出结果ca cat catt
回复
SuperDay 2019-09-27
匹配 0 次或多次 * 匹配 0 次或多次匹配符 * 可以匹配 0 次或多次出现。其实就是相当于占位符。 例如下面的范例,可以匹配 ca, cat, catt 等等 范例 $ echo -e "ca\ncat\ncatt" | awk '/cat*/' 运行上面的 awk 命令,输出结果如下
回复
SuperDay 2019-09-27
匹配字符集 [] 如果要匹配的字符是在多个字符中选择一个,那么可以使用 匹配字符集 []。 例如下面的命令,匹配那些以 C 或 T 开头的字符。但是不会匹配以 B 开头的字符 $ echo -e "Call\nTall\nBall" | awk '/[CT]all/' 运行上面的 awk 命令,输出结果如下 Call Tall
回复
所念皆山海 2019-09-27
引用 7 楼 SuperDay 的回复:
跟C语言里面的用法类似 https://www.cnblogs.com/thefirstfeeling/p/5667053.html
感谢,[ \t]*$/ 能麻烦您讲下这里为什么回车键前面要有空格吗? 以及这里的*是什么意思呢? 感谢~!
回复
SuperDay 2019-09-27
跟C语言里面的用法类似 https://www.cnblogs.com/thefirstfeeling/p/5667053.html
回复
所念皆山海 2019-09-27
引用 5 楼 SuperDay 的回复:
$0就是完整内容嘛,匹配成功就价格问号换行,否则原样输出。猜都能吃的出来,不懂的话找个手册仔细看看。要勤于动脑,虽然我没怎么写过awk都能靠猜
请问printf里面有?是啥意思呢? 谢谢
回复
SuperDay 2019-09-27
$0就是完整内容嘛,匹配成功就价格问号换行,否则原样输出。猜都能吃的出来,不懂的话找个手册仔细看看。要勤于动脑,虽然我没怎么写过awk都能靠猜
回复
所念皆山海 2019-09-27
引用 1 楼 mymtom 的回复:

$ cat data.txt
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,11
1,2,3,4,5,6,7,8,9,10,11,12,
1,2,3,4,5,6,7,8,9,10,11,12,13  
1,2,3,4,5,6,7,8,9,10,11,12,13,14,  
$ awk '{if ($0 ~ /,[ \t]*$/) {printf("%s?\n", $0)} else {print}}' data.txt
1,2,3,4,5,6,7,8,?
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9,10,?
1,2,3,4,5,6,7,8,9,10,11
1,2,3,4,5,6,7,8,9,10,11,12,?
1,2,3,4,5,6,7,8,9,10,11,12,13  
1,2,3,4,5,6,7,8,9,10,11,12,13,14,  ?
版主大人您好! 请问 $ awk '{if ($0 ~ /,[ \t]*$/) {printf("%s?\n", $0)} else {print}}' data.txt 这个式子可否详细地讲下里面各个部分的含义? 我没查明白,谢谢
回复
zhouchao6 2019-09-27
sed -i 's/,$/,?/g' aaa.txt 这个直接修改目标文件,把以 , 结尾的替换为 ,?
sed -n 's/,$/,?/g;p' aaa.txt 修改后输出,不修改目标文件
回复
所念皆山海 2019-09-27
谢谢版主大人,我去搜索和理解下您命令里面各个部分的含义
回复
mymtom 2019-09-27

$ cat data.txt
1,2,3,4,5,6,7,8,
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,11
1,2,3,4,5,6,7,8,9,10,11,12,
1,2,3,4,5,6,7,8,9,10,11,12,13
1,2,3,4,5,6,7,8,9,10,11,12,13,14,
$ awk '{if ($0 ~ /,[ \t]*$/) {printf("%s?\n", $0)} else {print}}' data.txt
1,2,3,4,5,6,7,8,?
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9,10,?
1,2,3,4,5,6,7,8,9,10,11
1,2,3,4,5,6,7,8,9,10,11,12,?
1,2,3,4,5,6,7,8,9,10,11,12,13
1,2,3,4,5,6,7,8,9,10,11,12,13,14, ?
回复
发动态
发帖子
Linux/Unix社区
创建于2007-08-27

2.0w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
社区公告
暂无公告