当前位置 : 首页 » 互动问答 » 正文

用sed替换字符

分类 : 互动问答 | 发布时间 : 2018-04-27 15:55:51 | 评论 : 2 | 浏览 : 43 | 喜欢 : 0

我正在学习本周如何使用awk和sed。我知道这个问题以前可能有人问过,但我不确定我的脚本有什么问题。我有三个文件,我使用grep来搜索模式gge0001x gge0001y gge0001z。 x在file1中,y在文件2中,z在file3中。如果有人想看到L2E [1-3] .iva,他们就在这里:<!not translate> https://gist.github.com/anonymous/1112988408874c730cd4f3d313226ba4 #!/ bin / bash 回声“性能数据” sed -n'1,19p'L2E1.iva | cat> file1#在L2E1中采用1-19行, #输出到file1。接下来的两个命令做同样的事情 sed -n'1,19p'L2E2.iva | cat> file2 sed -n'1,19p'L2E3.iva | cat> file3 curveName =`grep“F”file1 | sed“s / F / /”` #这将在文件1中搜索F,然后用空格替换F. curveName2 =`grep“F”file2 | sed“s / F / /”` curveName3 =`grep“F”file3 | sed“s / F / /”` echo“Curve Name”“$ curveName $ curveName2 $ curveName3”

我希望我的输出是曲线名称gge0001x gge0001y gge0001z。但是输出是这个:
性能数据gge0006ze gge0006x 

如果我自己将它们回显出来,那么它很好,但是一旦我在同一行回显全部三行,输出就会偏斜。为什么x在最初的时候显示出来,当我回应它时,我的y是在哪里?

If I echo them out by themselves then it is fine, but once I echo all three on the same line the output gets skewed. Why does x show up last when it is first when I echo it and where did my y go to?

回答(2)

  • 1楼
  • 首先有一些提示:

     sed -n'1,19p'L2E1.iva | cat> file1
    

    您可以省略catsed的输出直接重定向到文件:

     sed -n'1,19p'L2E1.iva> file1
    
     curveName =`grep“F”file1 | sed“s / F / /”`
    

    Use $()代替反引号进行进程替换:

     curveName = $(grep“F”file1 | sed“s / F / /”)
    

    但是输出结果如下:Performance Data gge0006ze gge0006x

    输出中 Performance Data 的原因是,您在脚本的开头处echo

    此外你在最后一个echo: $curven ame2 - > $ curve N ame2中有一个错字,这就是为什么你的y丢失的原因。

    你是否仔细检查过你的文件是否有正确的内容?这是我可以想象的唯一原因,为什么你的x最后和最后的z first.

  • 2楼
  • 你也许可以将你的脚本压缩成一行<$ transranslate> $ echo曲线名称$(grep -Pohm1'(?<= F)。*'L2E {1..3}) 曲线名称gge0006x gge0006y gge0006z

    练习是搜索中使用的选项

    exercise is to search the options used in grep

相关阅读: