当前位置: 技术问答>linux和unix
在SUSE linux上执行sed命令报“段错误是什么原因,怎样解决
来源: 互联网 发布时间:2016-08-04
本文导语: 操作系统版本信息: linux:~ # uname -a Linux linux 2.6.5-7.308-bigsmp #1 SMP Mon Dec 10 11:36:40 UTC 2007 i686 i686 i386 GNU/Linux linux:~ # cat /proc/version Linux version 2.6.5-7.308-bigsmp (geeko@buildhost) (gcc version 3.3.3 (SuSE Linux)) #1...
操作系统版本信息:
linux:~ # uname -a
Linux linux 2.6.5-7.308-bigsmp #1 SMP Mon Dec 10 11:36:40 UTC 2007 i686 i686 i386 GNU/Linux
linux:~ # cat /proc/version
Linux version 2.6.5-7.308-bigsmp (geeko@buildhost) (gcc version 3.3.3 (SuSE Linux)) #1 SMP Mon Dec 10 11:36:40 UTC 2007
linux:~ # lsb_release -a
LSB Version: core-2.0-noarch:core-3.0-noarch:core-2.0-ia32:core-3.0-ia32:graphics-2.0-ia32:graphics-2.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: SUSE LINUX
Description: SUSE LINUX Enterprise Server 9 (i586)
Release: 9
Codename: n/a
以 root 用户执行下面的命令之一:
sed 's/connect *system/--connect system/ig' abc.sql > 123.sql
sed -i 's/connect *system/--connect system/ig' abc.sql
命令执行时报“段错误”,观察生成的文件发现内容不全,应该是执行到一半就报错退出了。
如果换用其它用户就不报错。
linux:~ # uname -a
Linux linux 2.6.5-7.308-bigsmp #1 SMP Mon Dec 10 11:36:40 UTC 2007 i686 i686 i386 GNU/Linux
linux:~ # cat /proc/version
Linux version 2.6.5-7.308-bigsmp (geeko@buildhost) (gcc version 3.3.3 (SuSE Linux)) #1 SMP Mon Dec 10 11:36:40 UTC 2007
linux:~ # lsb_release -a
LSB Version: core-2.0-noarch:core-3.0-noarch:core-2.0-ia32:core-3.0-ia32:graphics-2.0-ia32:graphics-2.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: SUSE LINUX
Description: SUSE LINUX Enterprise Server 9 (i586)
Release: 9
Codename: n/a
以 root 用户执行下面的命令之一:
sed 's/connect *system/--connect system/ig' abc.sql > 123.sql
sed -i 's/connect *system/--connect system/ig' abc.sql
命令执行时报“段错误”,观察生成的文件发现内容不全,应该是执行到一半就报错退出了。
如果换用其它用户就不报错。
|
报操作的具体过程和报错发上来一下
|
好奇怪的问题
普通用户不报错 root用户就报错
你试着把sed内的特殊符号前面加试试 比如你的* -
普通用户不报错 root用户就报错
你试着把sed内的特殊符号前面加试试 比如你的* -
|
尝试建一个小文件,然后用SED做一下简单的操作会报错吗
|
例如
touch test
echo "aabb" >test
sed -i 's/bb/ecc/g' test
cat test
看结果是什么,如果没问题再写
sed -i 's/.*e/connect system/g' test
cat test
看是什么状况,如果没问题再写
sed -i 's/connect *system/--connect system/ig' test
cat test
另外就是你可以对比一下看结果中是进行到那行就出错,看源文件中出错的那行是什么内容
touch test
echo "aabb" >test
sed -i 's/bb/ecc/g' test
cat test
看结果是什么,如果没问题再写
sed -i 's/.*e/connect system/g' test
cat test
看是什么状况,如果没问题再写
sed -i 's/connect *system/--connect system/ig' test
cat test
另外就是你可以对比一下看结果中是进行到那行就出错,看源文件中出错的那行是什么内容
|
1.你的问题现在能重现吗?
2.是你现在能操作的机器吗?
3.你说当时SED写法忘了,意思是就是那个写法才出错还是随便一种写法才出现?
4.可以在你的问题环境里做一下我上面说的东西吗?
2.是你现在能操作的机器吗?
3.你说当时SED写法忘了,意思是就是那个写法才出错还是随便一种写法才出现?
4.可以在你的问题环境里做一下我上面说的东西吗?
|
莫非 原来的人把sed用别的版本的sed命令替换了?
你看看root目录下的.bashrc或者.bash_profile确认一下 root用户是否用别的命令替代了sed
(这中可能性小,纯属瞎猜)
|
你说的大文件一直都是你那个abc.sql,有试过别的大文件吗?
还有就是,确定一下它在执行到那一行出的错,看那行是什么内容
还有就是,确定一下它在执行到那一行出的错,看那行是什么内容
|
现在SED的RPM版本是4.1.5,升级一下试试