如何使用sed

时间:2017-09-03 01:34:39

标签: sed

我尝试使用sed在文件的开头和结尾添加数组括号(在首先删除文件末尾的尾随逗号之后)以放入文件的所有内容数组。我首先使用此sed命令从文件中删除最后一个逗号

sed '$ s/,$//' "$path"

之后,我使用下面的中间命令在文件的开头和结尾添加数组括号

 sed '$ s/,$//' "$path" |   sed 's/^.*$/[&]/' | tee $filename

这个sed 's/^.*$/[&]/'应该匹配所有内容(从开始到结束^$),然后在整个匹配[&]周围放置括号(即好像要将其放入数组中),但它改为在每行的开头和结尾放置数组括号。

问题,如何用sed编辑文件的开头和结尾?

整个剧本

for path in dirname/* do
   name="${path##*/}"
   sed '$ s/,$//' "$path" | sed 's/^.*$/[&]/' | tee "newdir/$name"
done

1 个答案:

答案 0 :(得分:2)

sed是一个逐行工作的编辑器,因此命令sed 's/^.*$/[&]/'会为每个行添加括号。如果您只想编辑文件的开头和结尾,则需要在替换前放置行号($代表最后一行):

sed -e '1 s/^/[/' -e '$ s/$/]/'

由于您已经有一个删除尾随,的命令,因此您可以将其与上述替换相结合。您的命令行将如下所示:

sed -e '1 s/^/[/' -e '$ s/,*$/]/' "$path" | tee $filename