sed & awk进阶
时间:2008-09-24 来源:ubuntuer
逛论坛总可以发现点小BT的东东,今天有人问如何用sed,实现tail -n 20之类.
我们知道打印一个文本的前n行可以使用sed -n '1,np' text
那么这里就可以想到将文本倒序,输出前多少行后,再到序过来^_^
zj@zj:~/Script/cushell/08.09.24$ cat text
asd 1
zxc 2
qwe 3
dfg 4
cvb 5
ert 6
zj@zj:~/Script/cushell/08.09.24$ sed '1!G;h;$! d' text | sed -n '1,4p' | sed '1!G;h;$! d'
qwe 3
dfg 4
cvb 5
ert 6
zj@zj:~/Script/cushell/08.09.24$ tail -n 4 text
qwe 3
dfg 4
cvb 5
ert 6
直接贴上了,大字真累...
例如 要将 0xFF, 0x00, 0x00, 0x00, 0x3F 这5个16进制数转换成2进制
zj@zj:~/Script/cushell/08.09.24$ cat test
0xFF,0x11,0x11,0x3F
zj@zj:~/Script/cushell/08.09.24$ cat test.sh
#!/bin/bash
j=1
while(( j<=4 ))
do
a=$(awk -F, -v i=$j '{print $i}' test)
echo $a
echo "obase=2;$((a))" | bc
(( j++ ))
done
zj@zj:~/Script/cushell/08.09.24$ ./test.sh
0xFF
11111111
0x11
10001
0x11
10001
0x3F
111111
我们知道打印一个文本的前n行可以使用sed -n '1,np' text
那么这里就可以想到将文本倒序,输出前多少行后,再到序过来^_^
zj@zj:~/Script/cushell/08.09.24$ cat text
asd 1
zxc 2
qwe 3
dfg 4
cvb 5
ert 6
zj@zj:~/Script/cushell/08.09.24$ sed '1!G;h;$! d' text | sed -n '1,4p' | sed '1!G;h;$! d'
qwe 3
dfg 4
cvb 5
ert 6
zj@zj:~/Script/cushell/08.09.24$ tail -n 4 text
qwe 3
dfg 4
cvb 5
ert 6
直接贴上了,大字真累...
例如 要将 0xFF, 0x00, 0x00, 0x00, 0x3F 这5个16进制数转换成2进制
zj@zj:~/Script/cushell/08.09.24$ cat test
0xFF,0x11,0x11,0x3F
zj@zj:~/Script/cushell/08.09.24$ cat test.sh
#!/bin/bash
j=1
while(( j<=4 ))
do
a=$(awk -F, -v i=$j '{print $i}' test)
echo $a
echo "obase=2;$((a))" | bc
(( j++ ))
done
zj@zj:~/Script/cushell/08.09.24$ ./test.sh
0xFF
11111111
0x11
10001
0x11
10001
0x3F
111111
相关阅读 更多 +