首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BSD `BSD‘:从shell中运行多个命令’BSD‘脚本:替换N个事件

BSD `BSD‘:从shell中运行多个命令’BSD‘脚本:替换N个事件
EN

Stack Overflow用户
提问于 2016-02-17 05:34:27
回答 1查看 144关注 0票数 0

我有普通的BSD SED (非GNU)。这就是我要跑的东西。它在最后一个sed命令上失败了。错误是:字符串比8个字符长;标签N是无效的或类似的。这不是全部代码--只是失败的部分:

代码语言:javascript
复制
 set -x
        chg ()
        {
        file=$1

sed ":1 
N 
$!b1 
s/)/,col1)/5 "  $file > tmp && mv tmp $file 
}

 chg $f

sed: 0602-404 Function N  cannot be parsed for both above and below

我试过了

代码语言:javascript
复制
 set -x
        chg ()
        {
        file=$1

sed ': 1 \
 N \
 $!b1 \
 s/)/,col1)/5'  $file > tmp && mv tmp $file 
}

 chg $f

相同的命令将在命令行中工作

代码语言:javascript
复制
   sed ': 1  <enter>
N  <enter> etc

你怎么解决这个问题?我希望)的第五次出现被,col )所取代,

代码语言:javascript
复制
sed -e $':x\nN;$!bx\ns/)/,col1)/5'

谢谢。1以上的班轮不起作用

由于某些原因,sed on-liners上的最后一点/5在AIX上从来不适合我。

输入

代码语言:javascript
复制
#more sdat
) from  ( d , bd  , c , d blah
someblah, blah ) as
somebla, lah )
as
(some other pos )
dada

输出

代码语言:javascript
复制
sed -e ':x' -e 'N;$!bx' -e 's/)/,col1)/5' sdat

) from  ( d , bd  , c , d blah
someblah, blah ) as
somebla, lah )
as
(some other pos )
dada

<br>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 14:18:53

我已成功地测试了下列项目:

代码语言:javascript
复制
function chg {
  sed ':x
N 
$!bx
s/)/,col1)/5 '
}

注意,我用单引号替换了双引号,用x替换了标签x。另外,请注意,在bx之后不允许使用任何空间。

使用此脚本,以下输入产生如下输出:

代码语言:javascript
复制
 (a)(b)
 (c) (d) (e) (f) (g)

输出:

代码语言:javascript
复制
(a)(b)
(c) (d) (e,col1) (f) (g)

sed使用:

代码语言:javascript
复制
 man sed | tail -n 1
 BSD                              May 10, 2005                              BSD

附注:在bash中,sed命令可以转换为与BSD一起工作的一行程序,如下所示:

代码语言:javascript
复制
sed -e $':x\nN;$!bx\ns/)/,col1)/5'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35448687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档