How to sed, awk, or tr certain characters in certain situations?
我如何awk,sed或处理
1 | sed 's/ /,/g' |
这里和问题示例
1 2 3 4 | Ted 36 Shaker Heights 04-25-1978 Robin 34 Vancouver 07-23-1980 Marshall 36 St. Cloud 11-28-1978 Lily 37 New York 03-22-1978 |
我需要sed,awk或tr,结果变成
1 2 3 4 | Ted,36,Shaker Heights,04-25-1978 Robin,34,Vancouver,07-23-1980 Marshall,36,St. Cloud,11-28-1978 Lily,37,New York,03-22-1978 |
我无法使用城市名称中的空格。关于如何解决该问题的任何建议?每行的字段编号并不总是组成。根据城市的不同,它将有4个或5个。
尝试一下:
1 | sed -E 's/ ([0-9]+) /,\\1,/;s/ ([0-9-]+)$/,\\1/' file |
输出:
1 2 3 4 | Ted,36,Shaker Heights,04-25-1978 Robin,34,Vancouver,07-23-1980 Marshall,36,St. Cloud,11-28-1978 Lily,37,New York,03-22-1978 |
如果城市始终被数字包围,则只需检查从数字到非数字的转换,反之亦然:
1 | sed 's/\\([0-9]\\) \\([^0-9]\\)/\\1,\\2/g;s/\\([^0-9]\\) \\([0-9]\\)/\\1,\\2/g' |
使用贪婪的愚蠢而基本的方法:
1 | sed -r 's/^([^ ]*) ([0-9]*) (.*) /\\1,\\2,\\3,/' file |
或更短:
1 | sed -r 's/ ([0-9]*) (.*) /,\\1,\\2,/' file |