700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux删除文件最后一行换行符 linux - 使用sed删除最后一个换行符 - 堆栈内存溢出...

linux删除文件最后一行换行符 linux - 使用sed删除最后一个换行符 - 堆栈内存溢出...

时间:2018-12-05 03:09:07

相关推荐

linux删除文件最后一行换行符 linux - 使用sed删除最后一个换行符 - 堆栈内存溢出...

1)从文件中删除最后一个空行:

首先,您当前使用的命令将删除所有空行和空行!

不只是最后一个。

如果要删除最后一行为空/空白的行,则可以使用以下命令:

sed '${/^[[:blank:]]*$/d}' test

INPUT:

cat -vTE test

a$

$

b$

$

c$

^I ^I $

OUTPUT:

sed '${/^[[:blank:]]*$/d}' test

a

b

c

说明:

第一个$将告诉sed仅在最后一行进行处理

/^[[:blank:]]*$/条件将由sed计算,如果此行为空或仅由空白字符组成,它将触发模式缓冲区上的删除操作,因此将不打印最后一行

您可以重定向sed命令的输出以将其保存到新文件,或使用-i选项( 如果使用它,则需要备份文件!!!! )或使用-i.bak强制sed在修改文件之前先对其进行备份。

重要:

如果您的文件来自Windows,并且包含一些回车符( \\r ),则此sed命令将不起作用! 您将需要使用dos2unix或tr -d '\\r'删除那些嘈杂的字符。

对于包含回车符的文件 ( \\r或^M ):

修复文件之前:

猫:

cat -vTE test

a$

$

b$

$

c$

^I ^I ^M$

OD:

od -c test

0000000 a \n \n b \n \n c \n \t \t \r \n

0000016

SED:

sed '${/^[[:blank:]]*$/d}' test

a

b

c

修复文件后:

dos2unix test

dos2unix: converting file test to Unix format ...

猫:

cat -vTE test

a$

$

b$

$

c$

^I ^I $

OD:

od -c test

0000000 a \n \n b \n \n c \n \t \t \n

0000015

SED:

sed '${/^[[:blank:]]*$/d}' test

a

b

c

2)从文件中删除最后的终止字符:

为此,我建议使用perl :

perl -pe 'chomp if eof' test

a

b

c

您可以将-i选项添加到in-place更改in-place (在运行命令之前对文件进行备份)。 最后但并非最不重要的一点是,您可能必须按照上述说明从文件中删除回车符。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。