No.8
- 回答日時:
すでに ed を使ったエレガントな解が示されていますが,もう一度自分の回答を添削しておきます.
head -$(( `wc -l < sample.txt` - 8 )) sample.txt | tail +7
くどくてすみません.
いえいえ、ありがとうございます。
ついでに、他の方にも参考になるように解説させていただきます。
お題:ヘッダ 6行とフッダ8行を取り除く
回答:head -$(( `wc -l < sample.txt` - 8 )) sample.txt | tail +7
wc -l sample.txt | sed s/sample.txt//
wcの結果でファイル名"sample.txt"が出力されてしまうのでそれを切り捨てしているのですね。
さらにこの部分は
wc -l < sample.txt
とすることで、よりスマートになると。
(ありがとうございます!ほかで
wc -l $source | cut -b 3-8
とやって切り捨ていたので使わせていただきます!)
それで、
$(( `wc -l < sample.txt` - 8 ))
の部分が
sample.txtの行数-8
と計算されて(sh系でないと動かないみたいですね)
head -n sample.txt
のようになり、sample.txtの上からn行(ヘッダ+ボディ)が出力されると。 最後に
head -n sample.txt | tail +7
で、7行目より下を出力する(ボディを取り除く)と。
計算ができると知らなかったので、とても勉強になりました。
どうもありがとうございました!
No.5
- 回答日時:
tac というのは初めて知りました.便利ですね.
これだけシンプルな解が示されているのに,あえて tac を使わないなら,
一応以下でできます.(泥くさいですが)
あ,bash 固有の機能を使ってます.tcsh とかなら無視して下さい.
ヘッダ 6行とフッダ8行を取り除く.
head -$(( `wc -l sample.txt | sed 's/sample.txt'//` - 8 )) sample.txt |tail +7
でも,この際 tac を含めて,gnu textutils をインストールしたらいかがでしょうか?
ご回答ありがとうございます。
こういった回答は応用的な勉強ができるので
大変参考になります!
どうもありがとうございます!
#残念ながら、あえて使わないのではなく、残念ながらインストールできないのですよ。。。
#お客さんの業務マシンなもので。
No.2
- 回答日時:
お詫び。
あとで質問をよく読み直したんですけど、
>ヘッダとフッターをカットしたいのですが、
ヘッダとフッターを切り捨てたいのではなく、
ヘッダとフッターを取り出してくっつけたいという質問ですね?
#1はその逆(中を取り出す方法)なのでまちがってました。
この回答への補足
大変申し訳ございません。
aix,FreeBSDのman,「UNIXの部屋」でtacを調べて載っていなかったので質問させていただいたのですが、教えていただいていましたね。大変申し訳ございません。早とちりしてしまいました。
また、再度「man tail」を実行したところ、オプションの説明ではなく、読み流していた本文に「+」についての記述を確認できました。大変すみませんでした。
目的のことは、教えていただいた
tail +3 ファイル名
でヘッダの切り捨てできました。
あとは、フッタを切り捨てたいのですが・・・。
よろしくお願いします。
ご回答ありがとうございます。
すみません。「カットしたい」というのは「捨てたい」と言うことです。
日本語って難しいですね。(^^;
各種レポートのヘッダとフッターを捨てたいのです。
テキストの先頭n行目から後ろm行目までを取得したいのです。
「head -n 3 hogehoge.txt > 3.txt
これで先頭3行目をとれますが、このあとです。」
これは完全ボケていました。すみません。。。
手元にはtacというコマンドがないのですが、これはどういうコマンドなのでしょうか?また、このコマンドをしようぜずに実現したいのですが、可能でしょうか?
よろしくお願いします。
No.1
- 回答日時:
たとえばテキストファイルの先頭2行と、後ろ3行を取り除くときは
tail +3 ファイル名 | tac | tail +4 | tac
こんな感じで処理してますが、こういう事がしたいのですか?
ちなみにtacはcatコマンドを反転して出力するコマンドです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
【DOSコマンド】for文の中で変...
-
○行目から□行目だけを表示する...
-
CentOS/リダイレクションに改行...
-
scriptコマンドでログファイル...
-
【Linux】findコマンドの表示順
-
UNIXで、ディレクトリを比較し...
-
スラッシュ"/"を削除したい
-
cshでfindした一覧をタイムスタ...
-
ショートカットのリンク先(フ...
-
*.txtファイルの最終行だけ参照...
-
大量のtxtファイルを一つのtex...
-
DOSバッチにて外のファイルの指...
-
renameコマンドでファイル名か...
-
Linuxで*をつかってファイル移...
-
フォルダ内のファイル名を取得する
-
TOPコマンドで表示するCPU使用...
-
batである文字列内に特定の文字...
-
bashでシングルクォート内の変...
-
vbaで「最前面に」とする方法は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
バッチで特定文字が含まれる先...
-
【Linux】findコマンドの表示順
-
【DOSコマンド】for文の中で変...
-
*.txtファイルの最終行だけ参照...
-
renameコマンドでファイル名か...
-
UNIXで、ディレクトリを比較し...
-
Linuxで*をつかってファイル移...
-
標準出力とリダイレクトを同時...
-
コマンドプロンプトでUSBメモリ...
-
スラッシュ"/"を削除したい
-
○行目から□行目だけを表示する...
-
CentOS/リダイレクションに改行...
-
コマンドプロンプト net user...
-
DOSでテキストファイルの中のあ...
-
unixのdiffコマンドの動作について
-
DOSバッチにて外のファイルの指...
-
コマンド結果のリダイレクト
-
^M削除方法、教えてください。
-
killコマンド実行時のメッセー...
おすすめ情報