Text-Processing

將文件分成兩部分,以某種模式

  • May 12, 2015

如何將一個大文件分成兩部分,在一個模式?

舉個例子file.txt

ABC
EFG
XYZ
HIJ
KNL

我想將此文件拆分為XYZ包含file1最多XYZ行和file2.

awk您一起可以:

awk '{print >out}; /XYZ/{out="file2"}' out=file1 largefile

**說明:**第一個awk參數 ( out=file1) 定義了一個變數,其文件名將在處理後續參數 ( ) 時用於輸出largefileawk程序會將所有行列印到由變數out( ) 指定的文件中{print >out}。如果XYZ找到該模式,則輸出變數將被重新定義以指向新文件 ( {out="file2}"),該文件將用作列印後續數據行的目標。

參考:

這是一份工作csplit

csplit -sf file -n 1 large_file /XYZ/

s無情地拆分文件,創建帶有前綴的片段ffile使用n單個數字編號,例如file0等。請注意,使用/regex/將拆分到但不包括匹配的行regex。要拆分包括行匹配,請regex添加+1偏移量:

csplit -sf file -n 1 large_file /XYZ/+1

這將創建兩個文件, file0file1. 如果您絕對需要命名它們,file1並且file2您始終可以在命令中添加一個空模式csplit並刪除第一個文件:

csplit -sf file -n 1 large_file // /XYZ/+1

創建file0,但為空,因此您可以安全地刪除它file1file2``file0

rm -f file0

引用自:https://unix.stackexchange.com/questions/202514