【问题标题】:add square brackets in each line of the file using bash使用 bash 在文件的每一行中添加方括号
【发布时间】:2018-10-12 14:23:56
【问题描述】:

我想在文件的每一行都添加方括号。

我正在使用sed -i "s/\(.*\)/[\1]/" file_name.txt 命令,但我看到它插入了 2 倍方括号,我的输出(只是第一行,每一行都相同)看起来像这样

[[1,1,0,0,0,0,1,0,24,3,0,0,0,0,86,149,149,14,0,0,0,0,32,149,46,16,0,0,1,13,3,33,65,66,0,0,0,0,0,2,149,140,6,0,0,2,62,148,88,24,26,2,0,14,116,148,30,15,1,0,0,1,5,30,56,18,0,0,0,0,0,4,149,46,40,14,0,0,1,34,31,46,149,31,0,2,9,12,1,7,8,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,12,2,0,0,0,0,0,0,0,0,0,0,0,0]]

如何使用 sed 为每一行插入一个方括号?请帮忙。提前致谢!

【问题讨论】:

  • 你的 sed 命令对我来说很好用。
  • 我尝试通过您的 sed 命令(如 echo foo | sed "s/\(.*\)/[\1]/")传递一些文本,并得到 [foo]。您是否可以两次运行该命令?如果不是:您使用的是哪个版本的sed
  • 它对我来说也很好用。我不知道出了什么问题:(
  • 你知道-i标志位编辑文件,如果你在同一个文件上多次运行该命令,它会继续添加方括号吗?
  • @Amit 是的。但是我第一次运行它时,它没有用方括号保存文件,当我再次运行它时,我得到了 2 个方括号。我不明白为什么文件在我运行一次时不显示单括号:/

标签: bash sed brackets square-bracket


【解决方案1】:

使用awk

awk '{print "["$0"]"}' file_name.txt

【讨论】:

    【解决方案2】:

    您的命令很好,除非运行两次,否则不应添加 2 [。也分组,在这种情况下,没有必要,采用整个模式 & 就足够了

    sed -i 's/.*/[&]/' file_name.txt 
    

    也许,尝试用你自己的单引号,双引号可以被 shell 中的其他东西解释

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2015-02-27
      • 1970-01-01
      • 2012-09-27
      相关资源
      最近更新 更多