���Ԃ̃t�B���^�R�}���h�icut�Apaste�Asort�Auniq�Ahead�Atail�Awc�j�̃e�N�j�b�N



���̋L����2008�N�`2009�N�����ĉj�ЂŘA�ڂ��Ă����u�Ɩ��Ŋy���邽�߂�UNIX�e�N�j�b�N�W�v�̌��{�ł��B

�͂��߂�

�@���̘A�ڂł́AUNIX�nOS���R�}���h���C���ォ�������悭���p���邽�߂ɒm���Ă����ׂ��e�N�j�b�N���A�֗��ȏ��Z���Љ�Ă����܂��B

�@�����́A�u���Ԃ̃t�B���^�R�}���h���g�����Ȃ��v���߂̃e�N�j�b�N���Љ�܂��B

スポンサードリンク

�֘A�L��

�Ώۓǎ�

�����m�F�‹�

�@�Ȃ��ׂ�UNIX�nOS���ʂɓ��Ă͂܂��悤���������̂ŁA���ɋL�q���Ȃ��ꍇ�́AMac OS X�ARed Hat Linux���ł����삵�܂��B

�@�V�F���Ɋւ��ẮAbash�iBourne-Again Shell 2������3�j���z�肵�Ă��܂��B

���Ԃ̃t�B���^�R�}���h���g�����Ȃ�

�@�W�����͂����f�[�^��������A���̌��ʂ��W���o�͂ɏo�͂����R�}���h���u�t�B���^�R�}���h�v�ƌĂт܂��B�t�B���^�R�}���h�́A�u|�i�p�C�v�j�v�Ōq���邱�ƂŁA���O�̉��͂Ȃǂ��܂��܂ȏ������ł��܂��B

�@�����́A���Ԃ̃t�B���^�R�}���h�icut�Apaste�Asort�Auniq�Ahead�Atail�Awc�j�̃e�N�j�b�N���������܂��B

�t�@�C�����������̕���

cut�R�}���h

�@cut�R�}���h�́A�����̕����ŋ��؂��ꂽ���ڂ�����܂��B���p���@�͎��̂悤�ɂȂ��܂��B

cut�R�}���h�̊��{���@

$ cut [�I�v�V����] [�t�@�C����]

�@���ȃI�v�V�����͎��̂Ƃ����ł��B

cut�R�}���h�̎��ȃI�v�V����

�I�v�V���� ����
-c �؂��o�����������w�肷��
-d ���؂蕶�����w�肷���i�f�t�H���g�̓^�u�j
-f �\�����鍀�ڂ��w���B���؂������ɍ�����1,2,3...
-s ���̋��؂��̂Ȃ��s�������

���j�u/etc/passwd�v�t�@�C�����烆�[�U�[�ꗗ���o��

�@�u/etc/passwd�v�t�@�C���́A���O�C�������‚��郆�[�U�[�ꗗ�Ȃǂ��Ǘ����Ă��܂��B���̒������A���[�U�[���������o�͂����ɂ́A���L�̂悤�Ɏw�肵�܂��B

$ cut -d : -f1 /etc/passwd
root
daemon
...(�ȗ�)

���j�J���}���؂���2���ڈȍ~���؂��o��

$ echo "field1,field2,field3,field4,field5" | cut -d , -f2-
field2,field3,field4,field5

�@�u,�i�J���}�j�v���؂��ŁA2���ڂ����Ō��̗��܂Ő؂��o���Ă��܂��B

���j1�����ڂ�3�����ڂ��؂��o��

$ echo "1234567" | cut -c1,3
13

�@�u-d�v�I�v�V�����ŋ��؂蕶�����w�肵�Ȃ��ꍇ�́A�^�u���g�p�����܂��B

���j�X�y�[�X���؂���1���ڂ�3���ڂ��؂��o��

$ echo "field1 field2 field3 field4 field5" | cut -d ' ' -f1,3
field1 field3

�@�u �i��j�v���؂��̏ꍇ�́A�u' '�i�V���O���N�H�[�e�[�V�����j�v�A�������́u" "�i�_�u���N�H�[�e�[�V�����j�v�Ŋ����܂��B

����1

cut�R�}���h�ł́A�A�������������1�‚̋��؂蕶���Ƃ��Ĉ������Ƃ��ł��܂����B����؂��̗����؂��o���ɂ�awk�Ased�Ȃǂ����p�ł��܂��B

awk���g���Ǝ��̂悤�Ɏw���ł��܂��i�ڍׂ͎����ȍ~�ɐ������܂��j�B

$ echo "field1 field2 field3 field4 field5" | awk '{ print $1,$3 }'

�t�@�C�����������̌���

paste�R�}���h

�@paste�R�}���h�́A2�‚̃t�@�C�����s�P�ʂŌ������܂��B���p���@�͎��̂悤�ɂȂ��܂��B

paste�R�}���h�̊��{���@

$ paste [�I�v�V����] [�t�@�C����]
����2

FreeBSD�Ȃǂł́A�t�@�C�����Ɂu-�v���w�肵���ꍇ�̂݁A�W�����͂����ǂݍ��݂܂��iGNU paste�ł́A�t�@�C�������^�������Ȃ��ꍇ�ɂ��A�W�����͂����ǂݍ��݂܂��j�B

�@���ȃI�v�V�����͎��̂Ƃ����ł��B

paste�R�}���h�̎��ȃI�v�V����

�I�v�V���� ����
-d ���؂蕶�����w�肷���i�f�t�H���g�̓^�u�j
-s 1�‚̃t�@�C���̊e�s��1�s�ɘA���ł��܂�

���j2�‚̃t�@�C���̓��e���������ďo�͂���

�@���̂悤�ȃt�@�C���ɑ΂��āApaste�R�}���h���K�p���Ă݂܂��B

file1�̓��e

$ cat file1
3, 8
5, 12
1, 3

file2�̓��e

$ cat file2
30, 2
4, 8
5, 9

2�‚̃t�@�C�����s�P�ʂŌ��������ꍇ

$ paste file1 file2
3, 8    30, 2
5, 12   4, 8
1, 3    5, 9

2�‚̃t�@�C���̓��e�����Ԃɏo�͂����ꍇ

$ paste -s -d '\n' file1 file2
3, 8
5, 12
1, 3
30, 2
4, 8
5, 9

�@�u-s�v�I�v�V������1�s�ɘA���A�u-d '\n'�v�I�v�V�����ɂ������s�����؂蕶���ɂ��邱�ƂŁA�t�@�C���̓��e�����Ԃɏo�͂��Ă��܂��icat file1 file2�Ɠ��������ł��j�B

�@�Ȃ��A�u> �t�@�C�����v�Ǝw�肷�邱�ƂŁA�w�肵���R�}���h�̎��s���ʂ��t�@�C���ɏ������߂܂��B

���j�R�}���h�̎��s���ʂ�file3�ɏ�������

$ paste -s -d '\n' file1 file2 > file3

���jls�R�}���h�̌��ʂ�3���ŕ\������

$ ls | paste - - -
a.txt b.txt c.txt
d.txt e.txt f.txt

�t�@�C�����������̃\�[�g

sort�R�}���h

�@sort�R�}���h�́A�����Ŏw�肳�ꂽ�t�@�C�����A�W�����͂����בւ��܂��B���p���@�͎��̂悤�ɂȂ��܂��B

sort�R�}���h�̊��{���@

$ sort [�I�v�V����] [�t�@�C����]

�@���ȃI�v�V�����͎��̂Ƃ����ł��B

sort�R�}���h�̎��ȃI�v�V����
�I�v�V���� ����
-b �擪�̋�������
-d �p�����A�����A��ȊO�̕����������
-k [���l] [���l]�Ԗڂ̗��ȍ~���L�[�Ƃ��ă\�[�g����
�@ �i[���l]��[���lA,���lB]�Ƃ����ƁA[���lA]�Ԗځ`[���lB]�Ԗڂ̗����L�[�Ƃ��ă\�[�g�����j
�@ �i[���l]��[���ԍ�.����] �Ƃ����ƁA�������̌������w�肵�ă\�[�g�����j
-[���l] [���l]�Ԗڂ̗��܂ł��L�[�Ƃ��ă\�[�g����
-m �����̃t�@�C�����\�[�g���Ȃ����}�[�W����
-n �擪�̕�������l�Ƃ��Ĉ����i���F10�A101�A2 �� 2�A10�A101�ƕ��ёւ����j
-r ���ʂ��~���ɂ����i�t�ɂ����j
-t [����] ���̋��؂蕶����[����]�Ŏw�肵�������ɂ���
-u �d���s���o�͂��Ȃ��悤�ɂ����i�usort | uniq�v�Ɠ����j
-z �u\0�v�i�k�������j�����؂蕶���Ƃ���

���jCSV�`���̃t�@�C����2���ڂ��\�[�g�ΏۂƂ��āA�����ŕ��ёւ���

$ cat test.csv
1,30,5,6
3,4,5,5
2,6,3,2

$ sort -t , -n -k 2 test.csv
3,4,5,5
2,6,3,2
1,30,5,6

�@�u,�i�J���}�j�v�����؂蕶���Ƃ��āA��������l�Ƃ��Ĉ������Ƃŕ��ёւ��Ă��܂��B

����3

POSIX�̃o�[�W�����iPOSIX 1003.1-2001�i200112:2001�N12���ȍ~�j�j�ɂ����ẮA�u-k ���l�v�I�v�V�������u+���l�v�Ǝw�肷����Warning���o�͂����܂��B

$ sort -t, -n +1 test.csv
sort: Warning: "+number" syntax is deprecated, please use "-k number"

�����ŁA�u+1�v���A2�ԖڂƂ����ȍ~�̗������ƂɃ\�[�g�����Ƃ����Ӗ��ɂȂ��܂��B���̏ꍇ�A���̂悤�ɌÂ��o�[�W������POSIX���w�肵�ĉ������邩�A�u-k�v�I�v�V������p���Ă��������B

$ export POSIX2_VERSION=199209
$ sort -t, -n +1 test.csv

�Ȃ��Ahead -[���l]�A�܂���tail +[���l]�Ȃǂ����l�ł��B

uniq�R�}���h

�@uniq�R�}���h�́A�e�L�X�g�t�@�C�����̏d���s���m�F�ł��܂��B���p���@�͎��̂悤�ɂȂ��܂��B

uniq�R�}���h�̊��{���@

$ uniq [�I�v�V����] [�t�@�C����]

�@���ȃI�v�V�����͎��̂Ƃ����ł��B

uniq�R�}���h�̎��ȃI�v�V����

�I�v�V���� ����
-c �����s�̐����o�͂���
-d �d���s�̂ݕ\������
-u �d���̂Ȃ��s�̂ݕ\������

���j�t�@�C���̏d���s��1�s�ɂ܂Ƃ߁A�����s�̐����o��

$ cat test.txt
apple
apple
apple
grape
grape
peach

$ uniq -c test.txt
      3 apple�@�� apple�̕�����t�@�C������3�‘��݂���
      2 grape
      1 peach

�t�@�C�����̈ꕔ�����o��

head�R�}���h

�@head�R�}���h�́A�t�@�C���̐擪�������\�����܂��B���p���@�͎��̂悤�ɂȂ��܂��B

head�R�}���h�̊��{���@

$ head [�I�v�V����] [�t�@�C����]

�@���ȃI�v�V�����͎��̂Ƃ����ł��B

head�R�}���h�̎��ȃI�v�V����

�I�v�V���� ����
-[�s��] �t�@�C���̐擪���� [�s��] �����\�������i-n [�s��]�������j
-n -[�s��] �t�@�C���̖����� [�s��]���ȑO���\������
-v �t�@�C�������\������

���j1�ԍŋߍX�V���ꂽ�t�@�C�����\������

$ ls -t | head -1

�@ls�R�}���h��-t�I�v�V�����́A�ŏI�ύX�����Ń\�[�g���ĕ\�����܂��B�f�t�H���g�ł͍~���ŕ\�������܂��B

tail�R�}���h

�@tail�R�}���h�́A�t�@�C�����̍Ōゾ���\�����܂��B���p���@�͎��̂悤�ɂȂ��܂��B

tail�R�}���h�̊��{���@

$ tail [�I�v�V����] [�t�@�C����]

�@���ȃI�v�V�����͎��̂Ƃ����ł��B

tail�R�}���h�̎��ȃI�v�V����

�I�v�V���� ����
-[�s��] �t�@�C���̖����[�s��]�����\�������i-n [�s��]�������j
-n +[�s��] �t�@�C���̐擪����[�s��]���ȍ~���\������
-f �t�@�C���̖����܂œǂݍ����ł��I�����Ȃ��œǂݑ�����
-F �t�@�C�����̕ύX�Ȃǂ����������ꍇ�A�V�t�@�C�����I�[�v�����Ȃ���
-r �t�@�C���̓��e���s�P�ʂŋt�ɂ����iGNU tail �ɂ͑��݂��Ȃ��j
-v �t�@�C�������\������

���j�V�X�e���̃��O�t�@�C�������A���^�C���ɕ\������

$ tail -f /var/log/messages
Mar 22 23:17:01 localhost CRON[1688]: (pam_unix) session closed for user root
Mar 22 23:39:01 localhost CRON[1691]: (pam_unix) session opened for user root by (uid=0)
....

�@�u-f�v�I�v�V�����́A�t�@�C���ɒlj����ꂽ���e�����A���^�C���ɕ\�����܂��B�u/var/log/messages�v�ɂ́A���܂��܂ȃv���O�����̃��O���o�͂����܂��B���̂��߁A���O�t�@�C�����Ď������ۂɖ���܂��B

�@�Ȃ��A�Ď�����tail�R�}���h�����~�������ɂ́A�mCTRL�{C�n���������܂��B

�t�@�C�����e�̗v��

wc�R�}���h

�@wc�R�}���h�́A�e�L�X�g�E�t�@�C���̍s���A�P�ꐔ�A�o�C�g�����W���o�͂ɓn���܂��B���p���@�͎��̂悤�ɂȂ��܂��B

wc�R�}���h�̊��{���@

$ wc [�I�v�V����] [�t�@�C����]

�@���ȃI�v�V�����͎��̂Ƃ����ł��B

wc�R�}���h�̎��ȃI�v�V����

�I�v�V���� ����
-c �o�C�g���������\������
-l �s���������\������
-w �P�ꐔ�������\������

���j�T�u�f�B���N�g�����܂ނ��ׂẴt�@�C���������

$ ls
a.txt  b.txt  c.txt

$ find . -type f | wc -l
3

�@���̗��ł́A3�‚̃t�@�C�������݂��Ă��邱�Ƃ��������܂��B

�t�B���^�R�}���h�Ɋւ����֗���UNIX�e�N�j�b�N��

�@�Ō��ɁA�R�}���h���V�F���̐����\����p���������‚��̗����Љ�Ă����܂��B�Ɩ��ɍ��킹�ĉ��p���Ȃ����g���Ă��������B

�f�B���N�g�����u:�i�R�����j�v�ŋ��؂��ă��X�g�ɂ���

�@�ubin�v�Ƃ������O�̃f�B���N�g�����u:�i�R�����j�v�ŋ��؂��ă��X�g�ɂ��܂��BPATH�‹��ϐ���������̂ɖ���܂��B

$ find / -name "bin" -type d | paste -s -d : -

�B���t�@�C���i.�t�@�C���j���܂ރf�B���N�g���E�t�@�C���̃T�C�Y���o�͂���

�@���C���h�J�[�h��p���邱�ƂŁA�B���t�@�C�����܂�t�@�C���E�f�B���N�g���̃T�C�Y�������ŏo�͂��Ă��܂��B

$ du -cs * .[^\.]* | sort -n
4       .bashrc
8       .bash_profile
12      .emacs
1164    backup
1584    hoge
2772    total

�@�u* .[^\.]*�v�́A�C�ӂ̕��������̃t�@�C���ƁA�u.�i�h�b�g�j�v�����n�܂��C�ӂ̕��������̃t�@�C�����ɓW�J�����܂��B

�����_���ȕ��������o�͂���

�@�C�ӂ̒����̗���������ꍇ�ɖ��ɗ����܂��B���̗��ł�6�����̃����_���ȕ��������o�͂��Ă��܂��B

$ strings /dev/urandom | grep -o [0-9a-zA-Z] | head -n 6 | paste -d '\0' -s -; echo
ytiO0k

�@�u/dev/urandom�v�́A����������鉼�z�f�o�C�X�ł��Bstrings�R�}���h�́A�t�@�C�����̕\���”\�ȕ��������\�����܂��B

����4

GNU strings 2.16�i2005�N�j�ȑO���g�p�����ƁA���L�̂悤�Ȍx�����o�Đ��������ʂ��������Ȃ��̂ŁA���ӂ��Ă��������B

strings: Warning: '/dev/urandom' is not an ordinary file

IP�A�h���X���\�[�g����

�@IP�A�h���X���A�u.�i�h�b�g�j�v�ŋ��؂��ꂽ�e�g�Ń\�[�g�������ʂ��o�͂��܂��B

$ sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 /etc/hosts

127.0.0.1       localhost.localdomain localhost hoge
192.168.0.30    hoge.hoge.com

�@�Ⴆ�΁usort -n -k 1,1�v�Ǝw�肷���ƁA1���ڂ�l�Ƃ��ď��ɕ��בւ��܂��B�u/etc/hosts�v�́A�z�X�g����IP�A�h���X�̑Ή��t���ꗗ���L�q���ꂽ�t�@�C���ł��B

N�s�ڂ���M�s�ڂ��\������

�@�t�@�C�����̓����̋��Ԃ̍s�������\���������ꍇ�Ahead�R�}���h��tail�R�}���h��p���邱�Ƃ��ł��܂��B�Ⴆ�΁A3�s�ځ`7�s�ڂ������\�������ɂ́A���̂悤�Ɏw�肵�܂��B

$ seq 1 10 | head -7 | tail -n +3
3
4
5
6
7

�@�P�������i�����j���鐔�l�����\������seq�R�}���h��1�`10�̐��l�����o�͂��Ahead�R�}���h��tail�R�}���h�ŕ\���s�����肵�Ă��܂��B

�@�܂��A�V�F���֐������`�����ƁA���̂悤�ɂ��w���ł��܂��B

$ body () { N=$1; M=$2; tail -n +$1 | head -$((M-N+1)); }
$ seq 1 10 | body 3 7
3
4
5
6
7

�@���̗��ł́A�ubody N�s�� M�s�ځv�̂悤�Ȏw�����@�Ō��ʂ��\�����Ă��܂��B�Ȃ��A�V�F���֐��̏ڍׂȎg�����Ɋւ��ẮA�����ȍ~�ɐ������܂��B

����N�s���폜���ĕ\������

�@���̗��́A�u1�`10�v�̐��l��疖��5�s�i6�`10�j���폜���ĕ\�����Ă��܂��B

$ seq 1 10 | tail -r | tail +6 | tail -r
1
2
3
4
5

�@tail�R�}���h�́u-r�v�I�v�V������2��p���Ă��܂��BGNU tail�̂悤�Ɂu-r�v�I�v�V���������݂��Ȃ��‹��ł́A���̂悤�w���ł��܂��B

$ seq 1 10 | tac | tail -n +6 | tac

�@tac�R�}���h�icat�R�}���h�̋t�j�́A�t�@�C���̓��e���s�P�ʂŋt�ɕ\�����܂��B

��������p���Ă����v���Z�X���ɕ\������

$ ps aux | sort -n -k 4 | tail
....
root     21269  0.0  1.0   9144  2728 ?        Ss   09:37   0:00 sshd: root@notty 
root     11442  0.0  3.9  80108 10184 ?        Sl   Mar17   2:50 gnome-terminal
root       346  0.1  8.7  28552 22300 pts/3    S    Mar19   7:08 emacs

�@ps�R�}���h�́A�v���Z�X���ʎq�A�[�����ACPU���ԁA�R�}���h���Ȃǂ��\�����܂��B

C�����\�[�X�R�[�h�̃X�e�b�v���i�s���j���J�E���g����

�@�H���̌��ς����ɁA�\�[�X�R�[�h�̍s����p�����ꍇ�ɖ���܂��B

$ find . \( -name "*.h" -o -name "*.c" \) -print0 | xargs -0 cat | wc -l
10311

�@���́A�w�b�_�t�@�C���i.h�j�E�\�[�X�t�@�C���i.c�j���킹��10311�s�ō\�������Ă��邱�Ƃ��Ӗ����Ă��܂��B

�@�Ȃ��A��s�������ăJ�E���g�������ꍇ�́A���̂悤�Ɏw���ł��܂��B

$ find . \( -name "*.h" -o -name "*.c" \) -print0 | xargs -0 grep . | wc -l
8582

�@find�R�}���h�Axargs�R�}���h�̃I�v�V�����̏ڍׂ���1�����Q�Ƃ��������B

�悭���p�����R�}���h�̃��X�g���\������

$ history | awk '{print $2}' | sort | uniq -c | sort -nr | head
    112 ls
     55 for
     36 :>
     29 rm
     24 find

�@history�R�}���h�œ��������R�}���h�������A���`���đ��p���ɕ��ёւ��Ă��܂��B���̗��ł́Als�R�}���h��112��p���Ă��鎖���������܂��Bawk�̏ڍׂȎg�����Ɋւ��ẮA�����ȍ~�ɐ������܂��B

�d�����Ă��鐔�̑������Ƀ\�[�g����

$ cat foo.txt | sort | uniq -c | sort -k1 -n -r

4 aaa
2 bbb
1 ccc

sort�R�}���h��2���g���Ă��܂��B

foo.txt �ɓ��{�ꂪ�܂܂��Ă����ꍇ�́A�ȉ��̂悤�� LC_ALL=C �Ƃ����‹��ϐ����ݒ肵�ă\�[�g���܂��傤�B

$ cat foo.txt | LC_ALL=C sort | LC_ALL=C uniq -c | sort -k1 -n -r

�A�N�Z�X���O�����A�A�N�Z�X���̑���IP�A�h���X���ɕ��ׂ�

�@�A�N�Z�X���͂̍ۂɖ�‚Ǝv���܂��B

$ cut -d ' ' -f1 access.log | sort | uniq -c | sort -nr | head -10 | nl
     1    34375 210.XXX.86.4
     2    20005 137.XXX.0.41
     3    18489 137.XXX.0.42
     4    17538 219.XXX.244.93
     5    11252 222.XXX.237.24
....

�@nl�R�}���h�́A�s�ԍ����t�^���܂��B

�@�Ȃ��AFedora�ł́u/var/log/httpd/�v�ȉ��ɁADebian�ł́u/var/log/apache/�v�ȉ��ɁA�uaccess.log�v�uerror.log�v�Ƃ���Apache�̃A�N�Z�X���O�A�G���[���O���ۑ������Ă��܂��B

�A�N�Z�X���O�����A�A�N�Z�X����IP�A�h���X�̃z�X�g���ꗗ���擾����

$ for i in $(cut -d ' ' -f1 access.log | sort -u); { host $i; }
169.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-169.googlebot.com.
114.67.249.66.in-addr.arpa domain name pointer crawl-66-249-67-114.googlebot.com.
.....

�@host�R�}���h�́ADNS�T�[�o�[�Ŗ��O�������������ɂ‚��Ė₢���킹�����܂��B

�����̃f�B���N�g���ɃA�N�Z�X���� IP �A�h���X�ꗗ���\������

�@gz�`���ň��k���ꂽApache���O�iaccess.log.1.gz�Aaccess.log.2.gz�E�E�E�j�����A�u/blog�v�f�B���N�g���ɃA�N�Z�X����IP�A�h���X���\�����Ă��܂��B

$ zcat access.log.*.gz | grep "/blog" | cut -d ' ' -f1 | sort -u 
111.XX.9.82
122.XX.140.216
124.XXX.200.162
125.XXX.231.38
.....

�@���̗��ł́Azcat�R�}���h��p���āA���k���ꂽ�t�@�C���i�g���q.gz�j�̓��e���\�����Ă��܂��B

スポンサードリンク

�܂Ƃ�

�@�����́u�t�@�C�����̕��������E�����o���E�u���v�Ɋւ����e�N�j�b�N���Љ�܂����B�܂��A�����Љ�����Ȃ������Ased��awk�Aperl���g���΁A���蕡�G�ȕ���������s���܂��B�����ȍ~�A�e�[�}���ƂɃe�N�j�b�N���Љ�Ă������ŁA���ɏЉ���\���ł��B

スポンサードリンク