Разделите большой txt файл на определенный маленький файл

В основном похоже на необходимость в гибком (просто приложение, не целый рабочий стол) X сессий через ssh, который можно возобновить в любое время.

Я использую NX для этого. Я также использовал в течение некоторого времени x2go, но я всегда возвращаюсь к NX.

Некоторая ценность ссылок для взгляда на:

И несколько учебных руководств о NX:

1
07.11.2012, 01:57
2 ответа

Я предложил бы писать маленький сценарий:

NR_LINES=$(wc -l your-file | awk '{ print $1 }')
for line in {1..$NR_LINES}; do
  head -n $line your-file | tail -n 1 > your-file.part$line
done

Это сохраняет количество строк Вашего файла в переменной NR_LINES. Возможно, Ваш файл состоит из большего количества строк, чем те, которыми Вы интересуетесь. В этом случае необходимо установить переменную для себя. Сценарий выполняет итерации от 1 до последней строки в Вашем файле. Для каждого выполнения это печатает первые n строки ($line). Это передается по каналу к tail, который только печатает последнюю строку и сохраняет результат в файле.

2
27.01.2020, 23:29
  • 1
    Спасибо. Я хотел бы включить myfile каждый выполнять итерации и сохранил бы каждую часть. Я выполняю это: $ NR_LINES= (туалеты-l data.txt | awk '{печатают 1$}') для строки в {1.. $NR_LINES}; действительно возглавьте data.txt за-1$line | хвост-1 1> сделанный data.txt.part$line –  John_Amery 07.11.2012, 02:21

Можно использовать csplit для разделения на каждую линию с помощью шаблона /^/, совпадающего с началом линии. Аргумент {*} повторяет шаблон до конца входного сигнала.

csplit --elide-empty-files input.txt '/^/' '{*}'

Без --elide-empty-files (или -z) файл с индексом 0 wold будет пустым.

1
27.01.2020, 23:29

Теги

Похожие вопросы