■ はじめに
テキストエディタでも開けないファイルを扱うことが多くなった。 そんな際に、Linuxコマンドをよく使ったので、メモ。
目次
【1】head / tail 【2】split 【3】wc 【4】file / nkf 【5】grep (fgrep) 【6】diff / md5sum 【7】du
【1】head / tail
行頭・行尾から指定数、ファイル内容を抜き出す => 以下の関連記事も参照。
ファイルの内容を表示するコマンド
https://dk521123.hatenablog.com/entry/2016/08/08/235934
サンプル
# 1行目を表示 head -n 1 hello_world.csv # 100行目まで out.csv として保存 head -n 100 hello_world.csv > out.csv
応用:何行目から何行目まで抜き出す
# 50行目~100行目まで out.csv として保存 head -n 100 hello_world.csv | tail -n 50 > out.csv
【2】split
ファイルを分割する。
サンプル
# 指定行数でファイル分割 # -l 行数 分割ファイルの行数を指定する # -a 長さ 接尾辞の長さ(デフォルトは2文字) # -d 接尾辞を英字ではなく数字にする(00から) # [入力ファイル (hello_world.csv)] [出力ベース名 (hello_world_)] split -l 100000 -a 4 -d hello_world.csv hello_world_ # hello_world_0000, hello_world_0001, ...
参考文献
https://www.atmarkit.co.jp/ait/articles/1711/24/news016.html
https://takuya-1st.hatenablog.jp/entry/2018/04/25/083000
【3】wc
ファイルの行数や単語数をカウントする際に使える
サンプル
# データ行数を表示 wc -l hello_world.csv
例1:シェルで行数だけとりたい場合
$ cat sample.py | wc -l 5
https://qiita.com/wyamamo/items/bc23a3f8cce2cff1babb
例2:ファイルサイズをとりたい場合
$ wc -c sample.py | awk '{print $1}' 2609829
https://ameblo.jp/archive-redo-blog/entry-10196055325.html
例3:ファイル数のカウント
https://qiita.com/frozencatpisces/items/9e09f55ede49ef0c64dd
# -F"オプションを使用すると、対象のタイプに応じて末尾に記号が付与 $ ls -F # ディレクトリの場合は"/"が付与されるので、除外 $ ls -F | grep -v / # それをカウント $ ls -F | grep -v / | wc -l
参考文献
https://www.atmarkit.co.jp/ait/articles/1611/07/news026.html
【4】file / nkf
ファイルの文字コードを調べるのに使用
サンプル
file hello_world.csv
# hello_world.csv: ASCII text, with CRLF line terminators
参考文献
https://blog.katsubemakito.net/linux/what-character-encoding
【5】grep (fgrep)
* 特定行を抽出するのに便利なコマンド * 詳細は、以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/2017/08/06/213100
構文
grep [キーワード] [ファイル名] # 複数キーワードがある場合 grep -e [キーワード1] -e [キーワード2] ... [ファイル名] # 1件しかヒットしないことが分かる場合(例えば、IDで検索など) grep -m 1 [キーワード] [ファイル名] # 再帰的に検索(-r : 再帰、-l : バイナリー除外) grep -r 検索文字列 ディレクトリ # e.g. grep -rl 'hello' /user/world/
https://morinohito.site/it/command/grep-directory-detail
サンプル
$ grep sample1@gmail.com data.csv 00-111-222,sample1@gmail.com,xx1 $ fgrep -e 00-111-222 -e 00-111-228 data.csv 00-111-222,sample1@gmail.com,xx1 00-111-228,sample7@gmail.com,xx7 $ grep -m 1 sample1@gmail.com data.csv 00-111-222,sample1@gmail.com,xx1
サンプルデータ:data.csv
00-111-222,sample1@gmail.com,xx1 00-111-223,sample2@gmail.com,xx2 00-111-224,sample3@gmail.com,xx3 00-111-225,sample4@gmail.com,xx4 00-111-226,sampl5e@gmail.com,xx5 00-111-227,sampl6e@gmail.com,xx6 00-111-228,sample7@gmail.com,xx7 00-111-229,sample8@gmail.com,xx8 00-111-230,sample9@gmail.com,xx9
おまけ:シェルにして出力結果をファイルとして保存
#!/bin/bash fgrep -e 00-111-222 -e 00-111-228 data.csv > test.csv echo Done. See test.csv
出力結果:test.csv
00-111-222,sample1@gmail.com,xx1 00-111-228,sample7@gmail.com,xx7
参考文献
https://www.sejuku.net/blog/48915
【6】diff / md5sum
diff
* ファイル差分を抽出するコマンド * 「-s」だと同一かどうか教えてくれる
https://ex1.m-yabe.com/archives/3352
md5sum
* ファイルのチェックサムを算出してくれるコマンド => 詳細は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2017/01/30/220600
サンプル
$ md5sum sample.py e32c527814400081add7996e4122a5bc *sample.py # コピーしただけ $ cp sample.py sample1.py $ md5sum sample1.py e32c527814400081add7996e4122a5bc *sample1.py $ diff -s sample.py sample1.py Files sample.py and sample1.py are identical
【7】du
* ディスクの使用量を表示する
https://atmarkit.itmedia.co.jp/ait/articles/1610/25/news016.html
コマンド例
# ディスク容量がでかいTop5を表示 du | sort -nr | head -n 5
関連記事
文字列検索 / グレップ ~ grep / egrep / fgrep ~
https://dk521123.hatenablog.com/entry/2017/08/06/213100
md5sum ~ MD5ハッシュ値を返す ~
https://dk521123.hatenablog.com/entry/2017/01/30/220600
ネットワーク系コマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/07/27/214633
ネットワーク系コマンド ~ IPアドレス編 ~
https://dk521123.hatenablog.com/entry/2016/10/03/223638
ファイルの内容を表示するコマンド
https://dk521123.hatenablog.com/entry/2016/08/08/235934
ファイル内容を操作するコマンド
https://dk521123.hatenablog.com/entry/2023/07/26/000000
Linux ~ パフォーマンスに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2015/02/21/112554