日に日に分からんことが増えていく…

プログラマー初心者としての日々を学んでいることを記録していく。

シェルのコマンド例記録

参考になったコマンド

## a~gまで出力して、field numberが4以上だと、3連番する
$ echo {a..g} | xargs -n 1 | awk 'NR>=4{print $1, $1, $1}NR<4{print $1, $1}'

## 80ポートのtcp udpの確認
$ grep '80/[tu][cd]p' /etc/services

## 出現文字列の種類を確認
$ cat test.txt |sed 's/./&\n/g' | sort | uniq

## 時間指定で、ファイルを抽出する方法 -t 時間順 -r リバース 
$ ls -ltr --full-time | awk -v "d=$(date -d '10 days ago' +%Y-%m-%d)" 'd<=$6'

## 階層指定(maxdepth)で10日前(0時を出発)までの更新ファイルの検出
$ find . -daystart -maxdepth 1 -mtime -10

## uploadsからworkに、1日以上まえのファイルを移動させる
$ find uploads/ -maxdepth 1 -daystart -mtime +0 | xargs -I@ mv @ work/

## 以後エラー出力をファイルに吐き出す
$ exec 2> file

## user1にuser変更
$ sudo -u -i user1

## test.txtの2列目(-k2,2)で数字順(-n)安定(-s)ソートする
$ sort -k2,2n -s test.txt

## 文字コードの判別
$ nkf -g shift_jis.txt
Shift_JIS

## 文字コードをShift_JISに変換
$ cat -e 'あい\nうえお' | nkf -sLwx > shift_jis.txt

## バイナリファイルを16進数ずつ引き剥がし(xxd -p)、nバイトに改行を入れる(fold -b<n>)
$ xxd -p shift_jis.txt | fold -b2

## 頭に16進数の0xをつける
$ cat tmp | fold -b2 | sed 's/^/0x/'

## string.txtに記載されたキーワードがtarget.txtにあるか判定して、exam.csvに記録
$ for i in `cat string.txt`; do if grep -q $i target.txt; then echo $i,O; else echo $i,X; fi ; done > exam.csv