【问题标题】:Sed script command truncating last lineSed 脚本命令截断最后一行
【发布时间】:2011-01-31 06:38:47
【问题描述】:

我正在尝试在 AIX 上使用以下命令从文件中删除回车符 (\r),但它也删除了我的最后一行。有什么建议吗?

sed -e 's/\r\n/\n/g' ./excprule > ./excprule.tst

命令序列:

dev1:> sed -e 's/\r\n/\n/g' ./test_file > ./test_file.tst dev1:> diff test_file.tst test_file 差异:0653-827 文件 test_file 末尾缺少换行符。 26a27 > 预告片 25

编辑:通过使用 perl 做同样的事情找到了解决方法,但想知道为什么这不起作用。

【问题讨论】:

  • 显然,diff 抱怨您的原始文件。基本上,它说它以 \r 结尾,而应该以 \n 结尾。显然,您的 sed 命令没有问题。

标签: shell sed ksh aix


【解决方案1】:

如果您在 AIX 中有 dos2unix,您也可以使用它,但是,使用 sed,

sed '$!{:a;N;s/\r\n/\n/;ta}' file

sed 在处理当前行时会删除换行符(参见手册页),因此您不会真正找到\r\n

【讨论】:

  • 为什么不直接使用tr '\r' '' < file.in > file.out
猜你喜欢
  • 2014-12-05
  • 2017-03-05
  • 2016-08-26
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多