我如何使用" "
来取消,点击或转发","
并将其替换为sed 's/ /,/g'
。更具体地说,当每行的字段数不同时。我知道如何简单地解决问题
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
这是一个问题的例子
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}}
我在城市名称中的空间遇到了麻烦。关于如何解决这个问题的任何建议?每行的字段编号并不总是包含在内。它将有4或5取决于城市。
答案 0 :(得分:2)
如果城市总是被数字包围,您可以检查从数字到非数字的转换,反之亦然:
sed 's/\([0-9]\) \([^0-9]\)/\1,\2/g;s/\([^0-9]\) \([0-9]\)/\1,\2/g'
答案 1 :(得分:2)
试试这个:
sed -E 's/ ([0-9]+) /,\1,/;s/ ([0-9-]+)$/,\1/' file
输出:
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
答案 2 :(得分:1)
使用贪婪的愚蠢和基本方法:
sed -r 's/^([^ ]*) ([0-9]*) (.*) /\1,\2,\3,/' file
或更短:
sed -r 's/ ([0-9]*) (.*) /,\1,\2,/' file