範例一
$ cat a
3 aa
5 uu
4 bb
7 38
2 oo
$ cat b
uu test
38 abc
oo def
$ sort -k 2 a | sed "s/ /:/" > a.sorted # 將主 key 做排序, 並將空白變成 ":"
7:38
3:aa
4:bb
2:oo
5:uu
$ sort b | sed "s/ /:/" > b.sorted # 將主 key 做排序, 並將空白變成 ":"
38:abc
oo:def
uu:test
join -t ":" -1 2 a.sorted -2 1 b.sorted # 或 join -t: -1 2 a.sorted -2 1 b.sorted 皆可
38:7:abc
oo:2:def
uu:5:test
解釋上述 join 命令的意思:
-t: 或 -t ":" : 依照 ":" 做切割欄位
-1 2 a.sorted : 第一個檔案 a.sorted, 要拿他的第二欄出來
-2 1 b.sorted : 第二個檔案 b.sorted, 要拿他的第一欄出來
這樣子就會把這兩個檔案抽出來的欄位做 match(join), 就會是結果。
cut
用來將檔案每一行的內容切掉部份,只留下關切的部份。
-d:分割方式,如 -d ':' 代表以分號來做切割。
-f+數字:取第幾個欄位,如 -f1 代表切割出來的 token 只要第一個。
範例一
cut -d ':' -f1 /etc/passwd
--
root
daemon
bin
sys
sync
games
man
...
範例二
ls -l | cut -c 1-10
--
total 201
drwxr-xr-x
drwxr-xr-x
-rw-r--r--
-rw-r--r--
netstat
用來列舉出目前系統啟動的網路服務
netstat -utln
pgrep
取得 process 某項屬性,例如以下例子就是取得 Dualview-Daemon 這個程式的 pid,而 -x 參數代表要 match 程式名稱,在此指 Dualview-Daemon。
pgrep -x Dualview-Daemon
--
10327
echo
X="12345"; echo ${X:0:1} --
1
sed
sed -e '12d' xxx # 將第 12 行清掉sed -e '1,5d' xxx # 將第 1 ~ 5 行清掉
sed -e '1,5d' -e 's/test/check/' # 第 1 ~ 5 行清掉, 並將 test 取代成 check
awk
範例一awk -F: -v 'OFS=:' '{ print $1, $5}' /etc/passwd
(-v 是設 OFS變數, OFS=中間間隔要用何種符號秀出來)
範例二
awk '!(NR>=1 && NR<=5){print $0}' xxx # 將第 1 ~ 5 行清掉
範例三
cat access.log | awk '{sum += $10} END {print sum}
find
範例一find . -name '*.tmp' -exec rm {} \;
範例二 ( -a = AND)
find / \( -type d -a -user leslie \)
範例三 ( -o = OR)
find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm {} \;
範例四 找出特定檔案中的特定片段
find ~/linux/kernel/ -name '*.c' -exec grep -H 'printk' {} \;
mount
範例一 掛載映像檔 (如有修改 image 的內容,記得要 umount)
mount -o loop system.img /media/mydir
範例二
mount -o remount,rw /system
[註] yaffs2 的映像檔格式無法 mount;ext2, ext3 可以。
gzip
範例一 (解開)
make tmp
cd tmp
cat ../ramdisk.img | gzip -cd - | cpio -id
cd tmp
cat ../ramdisk.img | gzip -cd - | cpio -id
範例二 (封裝)
find . | cpio -H newc -o | gzip > ../new_ramdisk.img
ps
ps -aux | grep 'apache' | awk '{print $2}'
dd
mkisofs -o -r /output_dir/filename.iso /input_dir/
或者
dd if=/dev/dvd of=output_dir/filename.iso
dd if=/dev/cdrom of=output_dir/filename.iso
沒有留言:
張貼留言