这是我的输入文件..
[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上运行正常,现在没有在bash脚本中使用fedora
我没有理由在一个系统上工作而不在另一个系统上工作..
[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.
如果可能的话,建议我一些替代方案..
答案 0 :(得分:2)
为什么复杂化?
$ cat File
6000 0000 005C 3320
6000 0000 005C 3320
$ sed '1s/..$/00/;' File
6000 0000 005C 3300
6000 0000 005C 3320
答案 1 :(得分:0)
您应该使用[0-9a-fA-F]
代替[0-9]
。
答案 2 :(得分:0)
您可能缺少-e
来表示您的sed表达式,并且Ubuntu sed更新且更宽松。更简单的表达可能会更好一点:
.... | sed -e '1s/[0-9][0-9]$/00/'