当前位置: 技术问答>linux和unix
用sed插入行的问题
来源: 互联网 发布时间:2017-04-15
本文导语: 代码如下: cat test.txt this is a test hello world this is a test #!/bin/ksh set -x ROWNUM=`grep -n "hello world" test.txt|cut -c 1-5` sed '${ROWNUM}i * debug DISPLAY 'new hello world' * debug ' Test.txt...
代码如下:
cat test.txt
this is a test
hello world
this is a test
#!/bin/ksh
set -x
ROWNUM=`grep -n "hello world" test.txt|cut -c 1-5`
sed '${ROWNUM}i
* debug
DISPLAY 'new hello world'
* debug
' Test.txt >temp.txt
执行时报错,Function cannot be parsed 。 应该是不能识别变量 $ROWNUM 的问题。
还有一个问题,就是我在display里面有单引号,这似乎会和sed后面的单引号冲突 。
求大侠赐教
cat test.txt
this is a test
hello world
this is a test
#!/bin/ksh
set -x
ROWNUM=`grep -n "hello world" test.txt|cut -c 1-5`
sed '${ROWNUM}i
* debug
DISPLAY 'new hello world'
* debug
' Test.txt >temp.txt
执行时报错,Function cannot be parsed 。 应该是不能识别变量 $ROWNUM 的问题。
还有一个问题,就是我在display里面有单引号,这似乎会和sed后面的单引号冲突 。
求大侠赐教
|
#!/bin/ksh
sed '/hello world/i
* debug
DISPLAY "new hello world"
* debug
' urfile
|
改用双引号。另外cut的这个地方可能需要修改。
#!/bin/ksh
set -x
ROWNUM=`grep -n "hello world" file |cut -d":" -f1`
sed "${ROWNUM}i
* debug
DISPLAY 'new hello world'
* debug
" file >temp.txt
或者直接用sed来定位呗?
#!/bin/ksh
set -x
sed "/hello world/i
* debug
DISPLAY 'new hello world'
* debug
" file >temp.txt
|
我这里测试两种方法都没有问题,你用的什么操作系统?
[root@ tmp]# cat test1.sh
#!/bin/ksh
ROWNUM=`grep -n "hello world" urfile |cut -d":" -f1`
sed "${ROWNUM}i
* debug
DISPLAY 'new hello world'
* debug
" urfile
[root@ tmp]# ./test1.sh
cat test.txt
this is a test
* debug DISPLAY 'new hello world'* debug
hello world
this is a test
[root@ tmp]# cat test2.sh
#!/bin/ksh
sed "/hello world/i
* debug
DISPLAY 'new hello world'
* debug
" urfile
[root@ tmp]# ./test2.sh
cat test.txt
this is a test
* debug DISPLAY 'new hello world' * debug
hello world
this is a test
|
我是测试过的呢,难道是你的系统或工具版本不一样么?我的是 Centos,其它环境我也没有,就看看有没有其他人可以帮上忙的吧。