Text-Processing
將文件分成兩部分,以某種模式
如何將一個大文件分成兩部分,在一個模式?
舉個例子
file.txt
:ABC EFG XYZ HIJ KNL
我想將此文件拆分為
XYZ
包含file1
最多XYZ
行和file2
.
與
awk
您一起可以:awk '{print >out}; /XYZ/{out="file2"}' out=file1 largefile
**說明:**第一個
awk
參數 (out=file1
) 定義了一個變數,其文件名將在處理後續參數 ( ) 時用於輸出largefile
。awk
程序會將所有行列印到由變數out
( ) 指定的文件中{print >out}
。如果XYZ
找到該模式,則輸出變數將被重新定義以指向新文件 ({out="file2}"
),該文件將用作列印後續數據行的目標。參考:
這是一份工作
csplit
:csplit -sf file -n 1 large_file /XYZ/
會
s
無情地拆分文件,創建帶有前綴的片段f
並file
使用n
單個數字編號,例如file0
等。請注意,使用/regex/
將拆分到但不包括匹配的行regex
。要拆分並包括行匹配,請regex
添加+1
偏移量:csplit -sf file -n 1 large_file /XYZ/+1
這將創建兩個文件,
file0
和file1
. 如果您絕對需要命名它們,file1
並且file2
您始終可以在命令中添加一個空模式csplit
並刪除第一個文件:csplit -sf file -n 1 large_file // /XYZ/+1
創建
file0
,但為空,因此您可以安全地刪除它file1
:file2``file0
rm -f file0