【问题标题】:Substitute the Content of a file in Linux在 Linux 中替换文件的内容
【发布时间】:2014-12-29 02:45:07
【问题描述】:

我在Red Hat Linux机器上,需要在一个文件里面申请以下东西:

这就是我所拥有的:

42506F0BB83839

需要进行如下改造:

^S:CELL:42506F0BB83839.*$ WM_PLUTO

其中 WM_PLUTO 是制表符分隔的。 通常我用 vim 编辑文件并应用类似

:%s /^4250/\^S:CELL:从此丢失

如何做到这一点? 请注意,我有多行这样的行,它们都有固定部分42506F0BB8,最后 4 位数字会改变,不能重复,它们不是唯一的行,还有其他的有不同的细节。 因此,需要检测行中的所有修复部分并进行替换。

【问题讨论】:

  • 您的输入和预期输出是什么?
  • 正确:目前我有类似 ^S:CELL:425060BB814001.*$ WMHOME_PLUTO ^S:CELL:425060BB814002.*$ WMHOME_PLUTO ^S:CELL:425060BB814003.*$ WMHOME_PLUTO.我需要将其转换为 ^S:CELL:42506F0BB846D4.*$ WMHOME_Hebron ^S:CELL:42506F0BB846D5.*$ WMHOME_Hebron ^S:CELL:42506F0BB83AA3.*$ WMHOME_Hebron
  • @MorganForever 编辑你的函数,添加你拥有的,你想得到的。不要将这些信息放在评论中。

标签: linux shell vim sed


【解决方案1】:

只需用& 替换“从此迷路”即可。在替换中,& 将被替换为匹配的任何内容。

:%s /^4250.*/\^S:CELL:&.*$<tab>WM_PLUTO

【讨论】:

    【解决方案2】:

    你可以试试:

    sed 's/42506F0BB8..../\^S:CELL:&\.\*\$\tWM_PLUTO/' file
    

    【讨论】:

    • 对不起,我的描述有误。修复部分是 42506F0BB8 然后我有 500 行更改最后 4 位数字,所以我有 42506F0BB83839 、 42506F0BB81234 等。谢谢回答,但当然因为我错了,你的建议不起作用:-(
    • 只需添加 4 个点而不是那些数字。我将编辑答案@morgan-forever
    • 正确:目前我有类似 425060BB814001 425060BB814002 需要作为输出 ^S:CELL:425060BB814001.*$ WMHOME_PLUTO。 ^S:CELL:42506F0BB84002.*$ WMHOME_Hebron 这适用于 500 条不同的线路
    • 你可以用 [0-9] 改变一位数字,而不是把点 @morgan-forever youtube.com/playlist?list=PLcUid3OP_4OW-rwv_mBHzx9MmE5TxvvcQ
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2017-08-10
    • 2022-06-18
    • 2012-10-05
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多