LINUX.ORG.RU

Преобразование строк


0

0

172.17.0.2       192.168.1.1     55288      2213664   1055 65522     6 ppp0
 74.54.25.2       172.17.0.2             2          120      0     0     1 ppp0
 74.86.232.34     172.17.0.2             3          418     80  1051     6 ppp0
 172.17.0.2       192.168.1.1          3          201   1038    53    17 ppp0

как можно преобразовать такой вид троки, чтоб между значениями был один пробел? 
★★
Ответ на: комментарий от lodin

s/__*/_/g

видимо, и автор первого поста то же самое имел в виду. 

Дорогой движок ЛОРа, не ожидал такой подставы от тебя

Кстати, когда появится режим "user line break with quotes"? 

lodin ★★★★
()
Ответ на: комментарий от lodin

вообщето я имел ввиду, чтоб вид был таким:
172.17.0.2 192.168.1.1 55288 2213664 1055 65522 6 ppp0
74.54.25.2 172.17.0.2 2 120 0 0 1 ppp0
74.86.232.34 172.17.0.2 3 418 80 1051 6 ppp0
172.17.0.2 192.168.1.1 3 201 1038 53 17 ppp0

lioncub ★★
() автор топика

Длинновато конечно, но зато можешь местами столбцы поменять

gawk '{print $1" "$2" "$3" "$4" "$5" "$6" "$7" "$8}' /path/to/file

Godzillich
()
Ответ на: комментарий от lioncub

Я имел в виду, что запись вида s/ */ /g (которая в первом ответе) приведет к нежелательному эффекту, а если перед " *" добавить ещё один пробел, то получится то, что нужно.

Впрочем, с tr все равно короче всего.

lodin ★★★★
()
Ответ на: комментарий от lodin

awk хорошая вещь!

И\или такое сделать одной командой чтоб работал только с файлом p.txt:
sort -k 2d,1d p.txt -o p.txt
sed 's/  */ /g' p.txt > t.txt
mv t.txt p.txt

lioncub ★★
() автор топика
Ответ на: комментарий от lodin

> Я имел в виду, что запись вида s/ */ /g (которая в первом ответе) приведет к нежелательному эффекту, а если перед " *" добавить ещё один пробел, то получится то, что нужно.

А не проще вместо * поставить +?

friday ★★★
()
Ответ на: комментарий от friday

bash$ sed 's/ +/ /g'
a  b
a  b
c  d
c  d
e +f
e f

Проще, только не у всех работает

lodin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.