【问题标题】:Replace everything between two character替换两个字符之间的所有内容
【发布时间】:2013-06-06 20:02:49
【问题描述】:

全部。

我是 sed 的新手。

我想要类似的东西

输入:

ABC,DEF,GHI,JKL,MNO

输出:

ABC,,,,MNO

意思是……

I want to remove all contents between two ','

【问题讨论】:

    标签: bash sed awk


    【解决方案1】:

    这可能对你有用(GNU sed):

    sed 's/[^,]*,/,/2g' file
    

    【讨论】:

    • 再次感谢... potong .... 你也帮助了我的最后一个问题。我可以在 10 分钟后接受这个......所以我会接受你的回答......你的酷哥们
    • 但是拜托....agian....我尝试了 2-3 个小时...但我不能....你能解释一下为什么需要 '/2' 吗?意思是你能简要解释一下整个语法吗?
    • @user1640065 替代命令可以接受标志。标志设置在命令的末尾。在这种情况下,有两个标志在运行。 2 表示替换第二个出现,g 表示替换整个行中的所有出现。结合起来,它们意味着从整个行(文件)中的第二个到最后一个发生替换。
    【解决方案2】:

    您可以使用 awk 将 1 和 last 之间的所有字段设置为空:

    awk -F, -v OFS="," '{for(i=2;i<NF;i++)$i=""}7'
    

    【讨论】:

    • @potong 的 sed 解决方案更简单
    • @Endoro 我喜欢这个数字,就是这样。你可以使用任何数字 >0
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多