dポイントプレゼントキャンペーン実施中!

あるファイルの特定の一行だけを取りだすunixの
コマンドを教えて下さい。

具体的には

cat a.txt
1gyoume
3gyoume
4gyoume
5gyoume
6gyoume
7gyoume
8gyoume

といったファイルの末尾からX行目の内容を変数に入れたいのです。
a.txtが8行あると判断して8-X行目でファイルを分割、そのファイル
をtailコマンドで末尾1行目だけ出力すると出来そうだと思ってい
るのですがもっと簡単な方法はないでしょうか。

A 回答 (4件)

簡単にということでしたら、こんなのはどうでしょうか。


$ sed -n 'X p' a.txt
例えば3行目を取り出したいなら、
$ sed -n '3 p' a.txt
    • good
    • 0
この回答へのお礼

お礼が遅れ大変申し訳ありません。
ありがとうございます。意図通りの事が出来ました。
sedでそんなことが出来るとは勉強になりました。
他に色々出来そうなのでこれを機に使いこなすようにします。

お礼日時:2005/03/20 22:25

daling_2004さんに補足ですが…



a.txtのX行目の内容を変数VARに格納

 $ VAR=`sed -n 'Xp' a.txt`

ただし415さんは「末尾からX行目」を求めているようですので、Leanさんのようにtailを使い、
 
 $ VAR=`tail -X a.txt | sed -n '1p' `

はいかがでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
色々方法がありどれにするか迷ってしまいます。
質問の答えに期待する以上の回答を頂けて大変勉強になりました。

お礼日時:2005/03/20 22:30

補足です。


このカテゴリで質問しているという事は、使用OSはSolarisという事でいいですか?
もしtailコマンドが/usr/bin/tail(SUNWcsu)だとNo.2のオプション指定ではたぶんダメですね。
/usr/xpg4/bin/tail(SUNWxcu4)の場合だと大丈夫なようですが。

/usr/bin/tailの場合は↓のような感じになりますね。

% tail -Xlr a.txt | tail -1l

ファイルの末尾から3行目なら

% tail -3lr a.txt | tail -1l

参考URL:http://docs.sun.com/app/docs/doc/817-7410/6mmnue …
    • good
    • 0
この回答へのお礼

ありがとうございます。
下の方法をヒントにこの方法で出来ることに気づきました。
親切にその方法まで教えていただいて大変ありがとうございます。
お礼が遅くなり申し訳ありませんでした。

お礼日時:2005/03/20 22:28

tailコマンドで-rオプション(Reverse)が使用できるなら↓なのはどうでしょう。



% tail -r -n X a.txt | tail -n 1

ファイルの末尾から3行目なら

% tail -r -n 3 a.txt | tail -n 1

もっと汎用的でスマートなのがあるかも知れませんが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!