Chinaunix

标题: 如何替换数据中最后一列分隔符? [打印本页]

作者: gooderpan    时间: 2019-08-12 16:05
标题: 如何替换数据中最后一列分隔符?
本帖最后由 gooderpan 于 2019-08-12 17:23 编辑

比如文件如下以空格作为分隔符:
1 you are a goog woman
2 iam b
3 are a vitb

只想把最后一列的分隔符替换:如下
1 you are a good---woman
2 iam---b
3 are a---vitb

这种形式,各位大神有什么好的方法么?只是想知道mac系统的terminal下面有没有相应的简单的命令


作者: jzsjm1002    时间: 2019-08-12 16:33
  1. awk '{for(i=0;++i<=NF-1;)printf "%s",i==1?$i:" "$i;printf "---%s",$NF;print ""}' file
复制代码


作者: cfwyy    时间: 2019-08-12 16:41
  1. sed -E 's/ (\w+$)/---\1/' file
复制代码

作者: gooderpan    时间: 2019-08-12 17:08
回复 3# cfwyy
你好,我在mac的终端运行,貌似不行呀。请问您这是怎么回事呢??

作者: legs    时间: 2019-08-13 11:00
perl -pe's#.*\K #---#' file
作者: gooderpan    时间: 2019-08-13 11:12
回复 5# legs

谢谢大神,你的命令可以执行。请问,是不是用sed在该处处理的效果不好呀?
作者: cfwyy    时间: 2019-08-13 12:42
回复 4# gooderpan

没有mac, 我这好用的。
作者: legs    时间: 2019-08-13 14:09
gooderpan 发表于 2019-08-13 11:12
回复 5# legs 谢谢大神,你的命令可以执行。请问,是不是用sed在该处处理的效果不好呀?

Mac那是非GNU sed,我这FB下用sed可以下面这样用,你试一下:
  1. sed -E 's#(.*) #\1---#'
复制代码




作者: WilliBhamlll    时间: 2019-08-13 15:32
  1. awk '$--NF=$(NF-1)"---"$NF' file
复制代码

作者: Shell_HAT    时间: 2019-08-19 14:21
回复 4# gooderpan


在你的Mac里面分别试试:
  1. sed 's/ \(\w\+\)$/---\1/' 1.txt
复制代码
  1. sed 's/ \([^ ]\+\)$/---\1/' 1.txt
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2