ちょっとした処理のために、bashでファイルから改行を含むn文字~x文字分の範囲を抽出したいなぁと思い、最初はreadで実現しようと思ったのだが、どうも改行を含む文字数となるとうまくいかなかった。 で、tailとheadでとりあえず実現したので、念のため備忘として残しておく。 なお、この際改行も文字数として含まれるので注意すること。
cat file | tail -c +$((開始文字数 + 1)) | head -c $((終了文字数 + 1))
ちょっとした処理のために、bashでファイルから改行を含むn文字~x文字分の範囲を抽出したいなぁと思い、最初はreadで実現しようと思ったのだが、どうも改行を含む文字数となるとうまくいかなかった。 で、tailとheadでとりあえず実現したので、念のため備忘として残しておく。 なお、この際改行も文字数として含まれるので注意すること。
cat file | tail -c +$((開始文字数 + 1)) | head -c $((終了文字数 + 1))
LinuxやMac OS Xで、ファイルの先頭や末尾の数行だけを除外した状態でデータがほしい場合は、headやtailコマンドを用いると簡単に行える。
head -n -N # 末尾からN行を除外する
tail -n +N #先頭からN-1行を除外する
LinuxやUNIXを利用している方であれば特に説明する必要も無いが、UNIX系OSにはhead、tailという「最初(最後)から数えて◯行分を出力する」というコマンドが存在する。 特にtailは、fオプションと組み合わせてログの監視を行う際に非常に重宝する。
これと同じことをPowerShellで行う場合は、以下のようにする。
headコマンドに相当する操作をPowerShell2.0で行う場合は、以下のようにする。
(出力させるコマンド)[0..出力させたい行数-1]
実際に実行した際の例が以下。頭から数えて5行出力させている。
PS C...