我尝试使用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
答案 0 :(得分:2)
sed是一个逐行工作的编辑器,因此命令sed 's/^.*$/[&]/'
会为每个行添加括号。如果您只想编辑文件的开头和结尾,则需要在替换前放置行号($
代表最后一行):
sed -e '1 s/^/[/' -e '$ s/$/]/'
由于您已经有一个删除尾随,
的命令,因此您可以将其与上述替换相结合。您的命令行将如下所示:
sed -e '1 s/^/[/' -e '$ s/,*$/]/' "$path" | tee $filename