星期五, 三月 11, 2016

sed常用命令整理

 sed常用命令整理 2009-04-05 09:20:51
分类: 
sed '1,3d' file //删除1-3行
sed '/[Aa]bc/p' file //打印包含Abc或者abc的行
sed '/ABC/d' //删除包含ABC的行
sed '/ABC/!d' //不删除包含ABC的行
sed '5,$d' //从第五行到最后一行全部删除
sed 1q  //显示第一行
sed 's/$/.../g' //每行的最后面添加 ...
sed 's/d.\(sk\)/\1&/g' //满足d*sk的单词,在单词前添加sk
sed 's/<[^>]*>//g' //去除html标签
sed '/ABC/a\123' //在包含ABC的行后面添加一行数值为123的行
sed '/ABC/i\123' //跟a\不同的是i\是插入当前行的前面
sed '/ABC/c\123' //包含ABC的行将更改为123
sed '/ABC/{n;s/123/ABC/g}' //精确匹配包含ABC的下一行,将123全部替换成ABC
sed '/ABC/{s/A/a/}' //在包含ABC的行将A替换成a
sed -e '/ABC/h' -e '$g' //将包含ABC的行复制,在最后一行添加.
sed -e '/ABC/{h;d}' -e '/123/G' //将包含ABC的行复制并删除,在包含123的行后添加.
g等于在当前行覆盖,G是在符合条件的行后新增加一行.
sed 's/^/ /g' //每行前面增加一个空格
sed 's/.\(.\)$/*\1/' //将倒数第二位换成*
sed '/ABC/!s/1/*/g' //在不包含ABC的行里,将所有的1替换成*
sed 's/1\|2\|3/*/g' //在GNU里将不管是1或2或者是3替换成*

sed '/[Aa]bc/p' file //打印包含Abc或者abc的行
=>sed -n '/[Aa]bc/p' file

sed 's/1\|2\|3/*/g' //在GNU里将不管是1或2或者是3替换成*

用这个也可以
sed 's/[123]/*/g' test0405a

get my ip address

curl -s http://whereismyip.com | grep -E "[[:digit:]]{1,3}\.[[:digit:]]{1,3}[[:digit:]]{1,3}\.[[:digit:]]{1,3}" | sed 's/<[^>]*>//g'

Lenovo W130S (D400) DSM 4.3 的一块 1T 希捷盘 S.M.A.R.T 提示要挂了,于是换了一块 3T 的,正好趁机升级下系统

Lenovo W130S (D400)  DSM 4.3 的一块 1T 希捷盘 S.M.A.R.T 提示要挂了,于是换了一块 3T 的,正好趁机升级下系统
1)到 http://nanoboot.eu.org/ 下载 XPEnoboot
2)到 群晖网站下载官方固件 http://dl.synology.com/download/ 注意选择 XPEnoboot 支持的 DSM_DS3615xs_5022
3)备份你群晖的重要数据,导出系统配置
4)找个启动 U 盘,把 win32diskimager 及 1)下载的 XPEnoboot_DS3615xs_5.1-5022.img 放进去
5)使用你的 U 盘启动 W130S ,然后在 PE 中利用 win32diskimager 把 img 写到系统自带的 256M 闪存盘上,该盘为 SMI 芯片组,VID=090C, PID=1000 (慧荣主控) ,你也可以在写入之前利用 img 编辑工具如 WinImage 修改 img 其中的 syslinux.cfg 文件,把 VID ,PID 换成你的启动闪存盘对应的,我是进去系统后才换的。
Synoboot支持的U盘VID和PID如下:
VID=F400, PID=F401 (Synology)
VID=090C, PID=1000 (慧荣主控)
VID=0781, PID=5571 (闪迪酷豆)
VID=0EA0, PID=2168 (瀚邦主控)
6)拔掉你的启动 U 盘,使用内置闪存盘启动机器,选择 update 选项启动
7)在PC上使用群晖助手扫描,然后安装官方的 pat 文件
8)进入新系统,导入3)导出的系统配置,升级配套套件等。
我的 download station 的 pt 记录丢了(文件没丢,就是下载记录没了),photo 和 music 以及 movie 需要重新索引,除此之外,无异常。
因为一开始内置闪存盘的 VID 和 PID 和系统的对应不上,所以 file station 会列出你的内置闪存盘,此时正好可以修改覆盖其中 syslinux.cfg 的 VID和PID,再重启后就看不到内置闪存盘了。

利用小k智能插座自动重启自制固件路由

家里的netgear路由刷了自制merlin固件,功能强大,但是会莫名的死机,原因不详...

于是用想利用小k智能插座作进程守护,自动重启自制固件路由。

#!/bin/sh

ping -c 1 router.asus.com > /dev/unll
ret=$?

if [ $ret -eq 0 ]
        then
                echo 'Router is running' > /dev/unll
        else
                echo 'Maybe router is rebooting, checking again after 4 minutes ! ' > /dev/unll
                sleep 240

                ping -c 1 router.asus.com > /dev/unll
                ret=$?
                if [ $ret -ne 0 ]
                        then
                        logger 'Reset router now ....'
                        reboot
                fi
        fi  

但是发现router.asus.com不能解释,

通过ssh链接到小K上我发现/etc/resolv.conf是如下的:
search lan
nameserver 127.0.0.1
但是当我打开/tmp/resolv.conf.auto后又分明看到:


search wwan
nameserver 192.168.2.1

原来,dnsmasq抛弃私有地址的解析的...

修改 /etc/config/dhcp

        option rebind_protection 设置为'0'
        option rebind_localhost 设置为'0'

程序router_auto_reset.sh运行正常。

接下来,设置crontab:

*/5 * * * * /sbin/router_auto_reset.sh

即每5分钟运行一次检测脚本。通过以上的脚本,得到的效果是如果router死机,那么就会自动断电reset路由,如果路由只是重启,4分钟内不会rest.