相关疑难解决方法(0)

如何使用bash/sed脚本删除文本文件的第一行?

我需要使用bash脚本从一个巨大的文本文件中重复删除第一行.

现在我正在使用sed -i -e "1d" $FILE- 但删除大约需要一分钟.

有没有更有效的方法来实现这一目标?

bash scripting sed

517
推荐指数
12
解决办法
50万
查看次数

截断linux中的第一个100MB文件

我指的是你怎么能用很少的备用磁盘空间连接两个巨大的文件?

我正在实施以下内容:

  1. 分配组合大小的稀疏文件.
  2. 将100Mb从第二个文件的末尾复制到新文件的末尾.
  3. 截断第二个文件末尾的100Mb
  4. 循环2和3,直到完成第二个文件(将2.修改为目标文件中的正确位置).
  5. 做第2和第3和第4,但使用第一个文件.

我想知道是否有人能够"截断"linux中的给定文件?截断是按文件大小,例如,如果文件是10GB,我想截断文件的前100MB,并保留文件剩余9.9GB.有人可以帮忙吗?

谢谢

linux merge truncate file

18
推荐指数
4
解决办法
1万
查看次数

从txt文件中读取并删除第一行(或最后一行)而不复制

我想读取并从txt文件中删除第一行(没有复制,这是一个巨大的文件).
我已经阅读了网络,但每个人都只是将所需的内容复制到一个新文件中.我做不到.

低于第一次尝试.由于没有删除行,此代码将被置于循环中.如果代码将在每个开头删除第一行文件,代码将到达结尾.

#include <iostream>
#include <string>
#include <fstream>
#include <boost/interprocess/sync/file_lock.hpp>

int main() {
    std::string line;
    std::fstream file;
    boost::interprocess::file_lock lock("test.lock");
    while (true) {
        std::cout << "locking\n";
        lock.lock();
        file.open("test.txt", std::fstream::in|std::fstream::out);
        if (!file.is_open()) {
            std::cout << "can't open file\n";
            file.close();
            lock.unlock();
            break;
        }
        else if (!std::getline(file,line)) {
            std::cout << "empty file\n"; //
            file.close();                // never
            lock.unlock();               // reached
            break;                       //
        }
        else {
            // remove first line
            file.close();
            lock.unlock();
            // do something with line
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ fstream getline stdstring boost-interprocess

6
推荐指数
2
解决办法
5369
查看次数

标签 统计

bash ×1

boost-interprocess ×1

c++ ×1

file ×1

fstream ×1

getline ×1

linux ×1

merge ×1

scripting ×1

sed ×1

stdstring ×1

truncate ×1