Sed работает на одной системе, но не на другой - PullRequest
0 голосов
/ 28 ноября 2011

Это мой входной файл ..

 [root@localhost scripts]# cat ip6hdr.txt | xargs -n4
 6000 0000 005C 3320
 2001 0000 0000 0000
 0000 0000 0000 0100
 2001 0000 0000 0000
 0000 0000 0000 0200

Я хочу изменить последние две цифры первой строки файла, т.е. 20 на 00.

Я попробовал это ..

cat ip6hdr.txt | xargs -n4 | sed '1,1s/\([0-9]*\) \([0-9]*\) \([0-9]*\) \([0-9][0-9]\)\([0-9][0-9]\).*/\1 \2 \3 \400 /' 

Раньше он работал нормально на Ubuntu, теперь не работал на Fedora в скрипте bash

У меня нет причин, почему это работает в одной системе, а не в другой ..

 [root@localhost scripts]# sed --version
 GNU sed version 4.1.5
 Copyright (C) 2003 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
 to the extent permitted by law.

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

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

Зачем все усложнять?

$ cat File
6000 0000 005C 3320
6000 0000 005C 3320

$ sed '1s/..$/00/;' File
6000 0000 005C 3300
6000 0000 005C 3320
0 голосов
/ 28 ноября 2011

Вероятно, вам не хватает -e для обозначения вашего выражения sed и что Ubuntu sed более новый и более разрешительный.Гораздо более простое выражение может работать немного лучше:

.... | sed -e '1s/[0-9][0-9]$/00/'
0 голосов
/ 28 ноября 2011

Вы должны использовать [0-9a-fA-F] вместо [0-9].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...