使用bash在文件的每一行添加方括号

4
我希望对我的文件中的每一行都添加方括号。我曾尝试使用"sed -i "s/\(.*\)/[\1]/" file_name.txt"命令,但是我发现它会将方括号插入两次,并且我的输出(仅显示第一行,其他行也相同)看起来像这样:
[[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在每一行中仅插入一个方括号? 请帮忙。先谢谢!

它对我来说也一直很好用。我不知道出了什么问题 :( - Sanathana
@Amit 是的。但是第一次运行它时,它没有用方括号保存文件,当我再次运行它时,我得到了两个方括号。我不明白为什么当我运行它一次时文件没有显示单引号 :/ - Sanathana
@DanielBöhmer 是的。对于管道它是有效的,但当我在我的文件中运行它时就不行了 :/ - Sanathana
我甚至尝试了使用文件,结果如预期一样工作。你怎么称呼 sed?这是更大代码的一部分吗?我仍然怀疑它被调用了两次。你有没有再次检查是否有方括号? - Daniel Böhmer
是的,我仔细检查了。我删除了那个文件,重新创建了一个新文件并运行它,现在它可以工作了。之前我做了同样的事情大约10次(创建新文件),但是都没有成功。这很奇怪。 - Sanathana
显示剩余4条评论
2个回答

6

使用 awk

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

2

您的命令很好,不需要添加2个[,除非运行两次。此外,在这种情况下,组是不必要的,直接使用整个模式&就足够了。

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

也许,试着用单引号代替双引号,因为双引号有可能被shell解释成其他意思。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接