sed命令参数之-r -i

对于初学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参数当作备份名的后缀名了,造成我们的正则匹配失效

  

转载于:https://www.cnblogs.com/leleyao/p/10431307.html

引用\[1\]:在sed命令中,-r参数表示使用延伸型正则表达式语法。默认情况下,sed使用基础正则表达式语法。延伸型正则表达式语法支持更多的元字符和特殊字符的使用,使得匹配和替换更加灵活和方便。使用-r参数可以在sed命令中直接使用延伸型正则表达式语法,而不需要进行额外的转义或修改。引用\[2\]:例如,使用sed -r命令可以直接在命令行上进行sed的动作编辑,并且可以使用延伸型正则表达式语法。这样可以简化命令的书写,并且更容易理解和维护。引用\[3\]:延伸型正则表达式语法中,"^"符号表示匹配行的开头。在sed命令中,可以使用"^"符号来匹配以特定字符或字符串开头的行,并进行相应的操作。所以,sed -r表示使用延伸型正则表达式语法的sed命令。 #### 引用[.reference_title] - *1* [【Linux命令sed -i命令详解](https://blog.csdn.net/Dreamboy_w/article/details/121581567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [sed -i 命令入门详解](https://blog.csdn.net/h4241778/article/details/125263518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值