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 (在运行命令之前对文件进行备份)。 最后但并非最不重要的一点是,您可能必须按照上述说明从文件中删除回车符。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值