2019年8月19日 星期一

Usage of Linux csplit

csplit是將一個文件分成數個小區塊的工具

如果有個檔案text內容為:
  Title 1
  aaa
  bbb

  Title 2
  ccc
  ddd

  Title 3
  eee
  fff

想根據"Title"來分段:
$ csplit text -s -f title -b "%02d.log" /Title/ {*}

-s: 靜默模式
-f: 產生的檔名的前綴, 這邊為titlexxx
-b: 產生的檔名的後綴, 這邊為xxx00.log
/Title/: Parse用來分段的pattern
{*}: 執行pattern的次數, {1}為找一次, *為找到沒有為止

執行結束後會產生幾個檔案:
title00.log title01.log title02.log title03.log

通常會發現第一個檔案(title00.log)是空的
因為第一個檔案存的是第一個Title之前的資料,
如果text內容如下:
  zzz
  Title 1
  aaa
  bbb
  ...

那title00.log內容就會是zzz

其他依序如下
title01.log:
  aaa
  bbb

title02.log:
  ccc
  ddd

title03.log:
  eee
  fff

注意檔案內容不會包含pattern

沒有留言:

張貼留言