开发者社区> 问答> 正文

如何将sed命令应用于所有文件的某些行?

我有95个看起来像的文件:

2019-10-29-18-00/dev/xx;512.00;0.4;/var/x/xx/xxx
2019-10-29-18-00/dev/xx;512.00;0.68;/xx
2019-10-29-18-00/dev/xx;512.00;1.84;/xx/xx/xx
2019-10-29-18-00/dev/xx;512.00;80.08;/opt/xx/x
2019-10-29-18-00/dev/xx;20480.00;83.44;/var/x/x
2019-10-29-18-00/dev/xx;3584.00;840.43;/var/xx/x
2019-10-30-00-00/dev/xx;2048.00;411.59;/
2019-10-30-00-00/dev/xx;7168.00;6168.09;/usr
2019-10-30-00-00/dev/xx;3072.00;1036.1;/var
2019-10-30-00-00/dev/xx;5120.00;348.72;/tmp
2019-10-30-00-00/dev/xx;20480.00;2033.19;/home
2019-10-30-12-00;/dev/xx;5120.00;348.72;/tmp
2019-10-30-12-00;/dev/hd1;20480.00;2037.62;/home
2019-10-30-12-00;/dev/xx;512.00;0.43;/xx
2019-10-30-12-00;/dev/xx;3584.00;794.39;/xx
2019-10-30-12-00;/dev/xx;512.00;0.4;/var/xx/xx/xx
2019-10-30-12-00;/dev/xx;512.00;0.68;/xx
2019-10-30-12-00;/dev/xx;512.00;1.84;/var/xx/xx
2019-10-30-12-00;/dev/xx;512.00;80.08;/opt/xx/x
2019-10-30-12-00;/dev/xx;20480.00;83.44;/var/xx/xx
2019-10-30-12-00;/dev/x;3584.00;840.43;/var/xx/xx
对于某些行2019-10-29-18-00/dev,对于其他行,2019-10-30-12-00;/dev/

我想;在/dev/缺少的位置之前添加,因此我使用以下sed命令:

sed 's//dev/;/dev/' 但是,如何对;缺少的每一行应用此命令?我尝试这样:

for i in $(cat /home/xxx/xxx/xxx/*.txt | grep -e "00/dev/")
do 
sed 's/\/dev/\;\/dev/' $i > $i
done

展开
收起
祖安文状元 2020-01-08 15:27:55 351 0
1 条回答
写回答
取消 提交回答
  • 如果可以,请尝试使用GNU awk。

    awk -i inplace '/00\/dev\//{gsub(/00\/dev\//,"/00;/dev/")} 1'  *.txt
    
    

    sed解决方案:使用GNUsed进行了少量文件测试,效果很好。

    2020-01-08 15:28:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载