Хорошо, поэтому вам нужно заменить первые два и последнее место в каждой строке запятой. Вы не можете просто заменить каждое пространство, потому что 3-е поле может содержать пробелы. Вы можете сделать это с заменой регулярных выражений. Вот сценарий / команда sed, которая работает:
sed -re 's/^(\S*) (\S*) (.*) (\S+)\s*$/\1,\2,\3,\4/' in.txt > out.csv
В приведенном выше примере это возвращает:
Account,Units,Description,Delta
2281,19,Toshiba PX-1982GRSUB,0
9618,200,HP MX19942-228b,-25
19246,4,CompuCom HD300g Hard Drive,4
Это все еще довольно хрупко с обработкой пустых полей и разрывов полностью, если столбцы, отличные от третьего, содержат пробелы. Очень легко ввести такие искаженные данные, если они отформатированы вручную, как это сделал ваш босс. Вы должны предложить ему перейти на более надежный формат таблицы (например, правильный CSV & amp; Co) и редактор (общие инструменты распространения листа могут работать с CSV довольно хорошо и гибко, например LibreOffice / OpenOffice Calc, Microsoft Excel и Google Docs).
Мой параметр resolv.conf настроен следующим образом:
nameserver 127.0.1.1
search 192.168.178.1 <MyRouterName>
Первая строка - это локальный адрес, который я получаю, если я попробую следующее:
$ nslookup google.de
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: google.de
Address: 172.217.18.163
$
Возможно, это полезно для вас.
Мой параметр resolv.conf настроен следующим образом:
nameserver 127.0.1.1
search 192.168.178.1 <MyRouterName>
Первая строка - это локальный адрес, который я получаю, если я попробую следующее:
$ nslookup google.de
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: google.de
Address: 172.217.18.163
$
Возможно, это полезно для вас.