首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环中的SED命令

循环中的SED命令
EN

Stack Overflow用户
提问于 2013-06-18 16:27:17
回答 2查看 1.9K关注 0票数 0

你好:我有许多名为test-MR3000-1.txt to test-MR4000-1.nt的文件,其中名称中的数字更改为100 (即我有11个文件),

代码语言:javascript
运行
复制
$ ls test-MR*
test-MR3000-1.nt  test-MR3300-1.nt  test-MR3600-1.nt  test-MR3900-1.nt
test-MR3100-1.nt  test-MR3400-1.nt  test-MR3700-1.nt  test-MR4000-1.nt
test-MR3200-1.nt  test-MR3500-1.nt  test-MR3800-1.nt

还有一个名为resonancia.kumac的文件,它在几行中包含字符串XXXX

代码语言:javascript
运行
复制
$ head resonancia.kumac
close 0
hist/delete 0
vect/delete *
h/file 1 test-MRXXXX-1.nt
sigma MR=XXXX

我想要执行一个bash文件,它用从命令ls *MR* | cut -b 8-11获得的一组数字替换文件中的strig XXXX

我发现a post中有一些建议。我尝试我自己的代码

代码语言:javascript
运行
复制
for i in `ls *MR* | cut -b 8-11`; do
    sed -e "s/XXXX/$i/" resonancia.kumac >> proof.kumac
done

然而,在替换中,数字被独立的qoutes (例如'3000')包围。

Q:,我该怎么做才能避免数字集合中的单引号?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-18 16:58:43

这是所描述的环境的复制者:

代码语言:javascript
运行
复制
for ((i=3000; i<=4000; i+=100)); do
  touch test-MR${i}-1.nt
done
cat >resonancia.kumac <<'EOF'
close 0
hist/delete 0
vect/delete *
h/file 1 test-MRXXXX-1.nt
sigma MR=XXXX
EOF

这是一个将在该环境中运行的脚本:

代码语言:javascript
运行
复制
content="$(<resonancia.kumac)"
for f in *MR*; do
    substring=${f:7:3}
    echo "${content//XXXX/$substring}"
done >proof.kumac

...and输出如下所示:

代码语言:javascript
运行
复制
close 0
hist/delete 0
vect/delete *
h/file 1 test-MR300-1.nt
sigma MR=300

在这个输出中没有引号;所描述的问题没有被复制。

票数 3
EN

Stack Overflow用户

发布于 2013-06-18 17:14:25

或者可能是perl:

代码语言:javascript
运行
复制
#!/usr/bin/perl
@ls = glob('*MR*');

open (FILE, 'resonancia.kumac') || die("not good\n");

@cont = <FILE>;

$f = shift(@ls);
$f =~ /test-MR([0-9]*)-1\.nt/;
$nr = $1;

@out = ();
foreach $l (@cont){
    if($l =~ s/XXXX/$nr/){
        $f = shift(@ls);
        $f =~ /test-MR([0-9]*)-1\.nt/;
        $nr = $1;
    }
    push @out, $l;
}

close FILE;
open FILE, '>resonancia.kumac' || die("not good\n");
print FILE @out;

这将用第一个文件名取代第一个XXXX,这似乎是更改前的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17174144

复制
相关文章

相似问题

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