有一个大文件,其中最后一个符号为\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有什么解决方案吗?必须处理许多大文件,因此性能很重要。
答案 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;