如何删除文件最后一行的文本?

如何删除文件最后一行的文本?

我正在使用 Bash shell 脚本构建一个包含 Javascript 数组的文本文件。据我对 Javascript 的理解,数组中的最后一项不能有逗号。在我的 JavaScript 中,这给了我错误。

我有一个使用其他代码生成的项目列表,结果如下所示:

text0161: "blah",
text0162: "blah blah",
text0163: "blah blah blah",

我需要取出最后一行,text0163: "blah blah blah",并删除结尾的逗号,这样它就变成了text0163: "blah blah blah".

在我的处理过程中,此时没有任何内容text0163: "blah blah blah",因此我可以查找文件中的最后一行并删除逗号。但是,该行的内容可能会发生变化,因此它并不总是准确的text0163: "blah blah blah",。它可能会变成任何其他东西,比如text2020: "doobie doobie doo",

我知道我可以使用 sed 删除逗号,如下所示:

sed -i 's@,@@g' file.txt

但我不知道如何仅有的在最后一行执行此操作。

答案1

您可以指定特定命令/正则表达式的地址。最后一行由 表示$,因此在您的情况下它将是:

sed -i '$ s/,$//' file.txt

请注意,我将 your 替换@/,因为它们在正则表达式中更常用。

该正则表达式也仅删除行尾的逗号,例如,如果逗号后面有空格或逗号位于引用的文本中,则不会删除该逗号。

答案2

在 sed 中,您可以将最后一行与 匹配$,并且有一个命令d可以删除当前行:

sed -i '$d' file.txt

相关内容