AIX:从文件

时间:2017-09-04 17:43:10

标签: aix

有一个大文件,其中最后一个符号为\r\n。我需要删除它们。它似乎等同于删除最后一行(?)。 UPD :不,不是:文件只有一行,以\r\n结尾。

我知道两种方法,但两种方式都不适用于AIX:

sed 's/\r\n$//' file # I don't why it doesn't work
head -c-2 # head doesn't work with negative numbers

AIX有什么解决方案吗?必须处理许多大文件,因此性能很重要。

2 个答案:

答案 0 :(得分:0)

通常,如果您需要通过脚本编辑文件,我会因历史原因使用ed。例如:

ed - /tmp/foo.txt <<EOF
g/^$/d
w
q
EOF

ed不仅有点脾气暴躁。另请注意,您并未真正删除文件底部的空行,而是删除所有空行。使用ed和一些练习,您可以实现只删除文件底部的空行。例如转到文件的底部,搜索非空行,然后向下移动一行并从该点删除到文件末尾。 ed命令脚本就像你期望的那样行动(几乎)。

另外,如果他们确实有\ r \ n,那么这些不会被视为空行,而是带有控件-M(\ r \ n)的行。如果是这种情况,您可能需要调整模式。

答案 1 :(得分:0)

我对这个重复问题的回答https://stackoverflow.com/a/46083912/3220113也适用于此。另一种解决方案是使用

struct test {
    std::string name;
};

test t1;
t1.name = str;