はじめに
テキスト処理やファイル操作の問題と解法に関する自分用のメモです。
ご参考になれば幸いです。
問題と解法の例
- 問題1:連番のファイルの中から、抜けている番号を探す。
ls -v "file_*.json" | sed 's/^file_//' | sed 's/\.json$//' | awk '$1!=p+1{print p+1"-"$1-1}{p=$1}'
ls -vで番号順にファイルを表示した後、sedで数字以外を削除して、awkで数字の抜けを探しています。Finding gaps sequential numbersを参考にしました。
- 問題2:行番号のついたcsvファイルから特定の行番号を含む行のみを取り出す。
for number in $(cat row_numbers.txt); do cat input_file.csv | grep "^"$number"," >> output.csv ; done
ここでは
input_file.csv:行番号を含むcsvファイル
row_numbers.txt:取り出したい行番号を含むファイル
output_file.csv:取り出した結果を出力するファイル
としました。
- 問題3:あるキーワードを含むファイルを複数個まとめてあるディレクトリに移動
find . -name "*.xml" | xargs grep your_keyword | cut -d':' -f1 | sort | uniq | xargs -I {} mv {} dist_dir/
mv files with | xargsを参考にしました。