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

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

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧