1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ;
do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL"

Linux 命令

两个文件比对,求交集,并集,差集。

a.txt
1
2
3
4
5
6
7
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
b.txt
1
2
3
4
5
6
7
8
aaaaa
ccccc
eeeee
ggggg
iiiii
jjjjj
kkkkk
lllll

方法1: sort

交集:

$sort a.txt b.txt | uniq -d

1
2
3
4
aaaaa
ccccc
eeeee
ggggg

并集:

sort a.txt b.txt | uniq

1
2
3
4
5
6
7
8
9
10
11
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
iiiii
jjjjj
kkkkk
lllll

差集:

sort a.txt b.txt b.txt | uniq -u

1
2
3
bbbbb
ddddd
fffff

说明: sort 先给文件排序。
-d 显示次数大于一次的行
-u 显示次数仅为一次的行

方法2: comm

comm a.txt b.txt

1
2
3
4
5
6
7
8
9
10
11
        aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
iiiii
jjjjj
kkkkk
lllll

显示三列:
第一列:a中有,b没有。a差b comm -2 -3 a.txt b.txt
第二列:a没有,b有。 b差a comm -1 -3 a.txt b.txt
第三列:ab都有 a交b comm -1 -2 a.txt b.txt

大小写互转

注意: 以下命令Mac OS无效

sed ‘s/[a-z]/\u&/g’
sed ‘s/[A-Z]/\l&/g’

拆解每一行中固定关键字的列

sed ‘s/.(action=[a-zA-Z]{1,}).(cmd=[_a-zA-Z-]{1,})./\1 \2/‘
注意:在次数匹配时:
1)圆括号必须转义
2)花括号必须转义

Alive

1
2
3
4
5
6
7
8
I: Insert Mode
Esc: Nomal Mode
Q : Quite With Out Save.
WQ : Write And Quite
HJKL: Left Down Up Right.
X: Cut Character
DD: Delete Line
P: Pesta Character

Felling Better

1
2
3
4
5
6
7
8
9
10
11
12
a: 在光标后插入
o: 在当前行后插入一个新行
O: 在当前行前插入一个新行
cw: 删除从光标所在位置后到一个单词结尾的字符 c2w, c3w.
Moving
0 / ^ 光标移动到行首(不是blank的位置)
$ / g_ 光标移动到行尾(不是blank的位置)
/pattern 定位到pattern的区域
Pesta
p: pesta
u : undo
ctrl+r : redo

Better,Faster,Stronger

1
2
3
4
5
6
7
8
9
10
11
2d : delete two lines.
100idesu[Esc]: insert 100 times desu.
4p : pesta 4 times.
% : swap {}
#/* : 向上/下搜索当前光标所在的单词

0y$ :移动到行首,开始copy,一直到本行最后一个字符。
d: delete and copy
v: select and copy
gU: 变大写 and copy
gu: 变小写 And copy

块操作

1
2
3
4
^ -> 到开头
Ctrl-v -> 开始块操作
Ctrl-d -> 向下移动
I– [Esc]-> 插入–

vim超能力

1
2
3
4
5
6
7
8
9
在当前行移动光标:
0: 到行首
^: 到本行的第一个非blank字符
$: 到行尾
g_:到本行最后一个非blank字符
fa:到下一个为a的字符处, fs到下一个为s的字符处
t,;到逗号前的第一个字符,ta到a前的第一个字符
3fa:当前行查找第三个出现的a
dt,:删除多有的内容,一直到逗号出现。

区域选择

1
2
3
4
5
6
7
8
9
10
a 和 i
action 可以是任何命令,d:delete, y:copy, v:view mode
object 可以是:w:word, s:statement, p:paragraph,也可以是特殊的字符。
例如字符串:(map (+) ("foo")),光标在o上。
vi” : foo
va” : “foo”
vi) : “foo”
va) : (“foo”)
v2i): map (+) (“foo”)
v2a): (map (+) (“foo”))

可视化选择

1
2
3
4
5
######缩进######
使用v/V进入可视化模式
J : 把所有的行链接起来变成一行
</>:左右缩进
= :自动缩进
1
2
3
4
5
######行后追加######
ctrl+v : 进入可视化编辑模式
选中相应的行(j或者ctrl+d 或者/pattern 或者%)
$到行最后
A(append,在行尾追加), 输入字符串, 按ESC