对于初学linux的朋友来说,能记住命令附带的一大帮参数就以及非常不容易了。好不容易把该用的参数都想全了。sed -irns 后面一大片脚本 ,一执行出错了 what!!!! 创建一下测试环境 head /etc/passwd > 1 cat 1 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin sed -ir '3,9s/(.*)/#\1/g' 1 然后就出坑了 sed: -e expression #1, char 16: invalid reference \1 on `s' command's RHS 非法参数 \1 然后抓破头 没错啊 问题就出在参数的顺序上 同样我们执行 sed -ri '3,9s/(.*)/#\1/g' 1 [root@fortestonly ~]# cat 1 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin #daemon:x:2:2:daemon:/sbin:/sbin/nologin #adm:x:3:4:adm:/var/adm:/sbin/nologin #lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin #sync:x:5:0:sync:/sbin:/bin/sync #shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown #halt:x:7:0:halt:/sbin:/sbin/halt #mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ok我们成功了 那问题出在哪里了显然我们r参数他没干活啊,那他去哪里了 这时候你在当前目录使用 ls 1* 命令 1 1r 这个1r是哪来的cat查看一下竟然和我们的1原来的内容一样 这时候仔细参读我们的-i参数 SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied). The default operation mode is to break symbolic and hard links. This can be changed with --follow-symlinks and --copy. 我们r参数当作备份名的后缀名了,造成我们的正则匹配失效
所有评论(0)