У меня есть файл с разделителями для пробелов с переменным количеством записей в каждой строке. Я хочу заменить первые два пробела запятыми, чтобы создать файл с разделителями-запятыми из трех столбцов.
Вот мой ввод:
a b 1 2 3 3 2 1
c d 44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z y 2 3 33
А вот мой желаемый вывод:
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line,http://google.com,100 200 300
ef,jh,77 88 99
z,y,2 3 33
Я пытаюсь использовать регулярные выражения perl в команде sed, но не могу заставить ее работать. Сначала я пытаюсь захватить слово, затем пробел, затем другое слово, но это работает только для строк 1, 2 и 5:
$ cat test | sed -r 's/(\w)\s+(\w)\s+/\1,\2,/'
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z,y,2 3 33
Я также пытаюсь захватить пробел, слово, а затем еще пробел, но это дает мне тот же результат:
$ cat test | sed -r 's/\s+(\w)\s+/,\1,/'
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z,y,2 3 33
Я тоже пытаюсь сделать это с.? подстановочный знак, но это смешно со строкой 4.
$ cat test | sed -r 's/\s+(.?)\s+/,\1,/'
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line http://google.com 100 200 300
ef jh,,77 88 99
z,y,2 3 33
Любая помощь очень ценится!