37
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

テキストファイルの特定文字列の行から特定文字列の行までを抽出したい

Last updated at Posted at 2014-02-26

例えば、START という行から STOP という行までを抽出したいとき。

awk を使う場合

シェルでこの手の作業をしようと思ったら、まず思いつくのが awk です。
実は簡単な記述法が用意されています。

cat file.txt | awk '/START/,/STOP/'

抽出した行をさらに加工したい場合は、awk で書くなら以下のような感じです。

cat file.txt | awk '/START/,/STOP/ { 何か加工処理 }'

しかし、sed と組み合わせるほうが自然な気がします。

cat file.txt | awk '/START/,/STOP/' | sed '何か加工処理'

ruby を使う場合

上記のフィルタ処理を ruby で書くとこうなります。
こちらもわりと簡単な記述で書けます。

cat file.txt | ruby -ne 'print if /START/../STOP/'

抽出した行をさらに加工したい場合は、ruby スクリプトで書くなら以下のような感じです。

File.open('file.txt').each do |line|
	next unless line =~ /START/ .. line =~ /STOP/
	何か加工処理
end
37
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?