- PR -

ShellScriptにおけるテキスト処理

1
投稿者投稿内容
ゆいな
ベテラン
会議室デビュー日: 2006/01/19
投稿数: 89
投稿日時: 2006-01-26 11:54
お伺いしたい事があります。

以下のようなファイルがあります。

----------
START
1
2
3
END=3
----------

ファイルの先頭行には、必ず、START
終端行には必ずEND=レコード行数が格納されています。

これをShellScriptで先頭行と終端行を削除して
別のファイルを作りたいのですがどうしたらよいでしょうか?

tail +2 /tmp/aaa > /tmp/aaa2
head -3 /tmp/aaa2

とやればよいのでしょうが、head -3 の"-3"は動的なんで
それをどうにかしたいのですが、煮詰まってしまいました。。。

よろしくお願いします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-01-26 12:25
grep -e "^[^START|^END=.*]" aaa

こんなのとか?
zirtun
会議室デビュー日: 2006/01/11
投稿数: 3
投稿日時: 2006-01-26 12:35
sed -e '1d; $d' aaa

これでもいいと思います.
zirtun
会議室デビュー日: 2006/01/11
投稿数: 3
投稿日時: 2006-01-26 13:36
mioさん、失礼ですが、それではまずいと思います.

grep -e '^[^START]'
↑の書き方では、行頭の1文字目が'S'、'T'、'A'、'R'のいずれでもない行に対するマッチになってしまいます.たとえばRedとだけ書いてある行も弾かれてしまいます.

その考え方で書くならば、下のようになると思います.
egrep -v '^(START|END)' aaa
ゆいな
ベテラン
会議室デビュー日: 2006/01/19
投稿数: 89
投稿日時: 2006-01-26 14:54
zirtunさん、mioさん
ご回答、ありがとうございました。

データの中身にSTART等がはいることもあるそうなんで
sedでやりたいと思います。
ありがとうございました。
助かりました。

mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-01-27 11:38
>mioさん、失礼ですが、それではまずいと思います.
失礼しました。実験もしないで書き込むとこういう恥をさらす(_ _;
1

スキルアップ/キャリアアップ(JOB@IT)