【问题标题】:How to edit a text file with shell script (split, replace, concatenate..)如何使用 shell 脚本编辑文本文件(拆分、替换、连接..)
【发布时间】:2019-09-23 11:28:19
【问题描述】:

我正在尝试制作一个用于文本编辑的脚本。我的文本文件有类似的数据

3c26 d3ac 27d4 c03f 5dc4 5242 1d96 bbbf
4b7c 84bf 51fb c73f f784 7a8e bee9 c6bf
32df aafb bcf9 6ebf 099b de28 5714 bcbf
7ada f876 320a c9bf 9afc 7ea2 f4b4 c93f

我想连接每 4 个数字块,然后将每个数字块写入一行,以 0x 开头并以 , 结尾

我希望文本看起来像这样

0x3c26d3ac27d4c03f,
0x5dc452421d96bbbf,
0x4b7c84bf51fbc73f,
0xf7847a8ebee9c6bf,
0x32dfaafbbcf96ebf,
0x099bde285714bcbf,
0x7adaf876320ac9bf, 
0x9afc7ea2f4b4c93f,

【问题讨论】:

  • 向我们展示您目前编写的代码。

标签: shell text replace split concatenation


【解决方案1】:

简单的 SedAwk 可以在这里工作

#cat your_file_name|sed '/^ *$/d' |awk '{print ("0x"$1$2$3$4",""\n""0x"$5$6$7$7",")}'
0x3c26d3ac27d4c03f,
0x5dc452421d961d96,
0x4b7c84bf51fbc73f,
0xf7847a8ebee9bee9,
0x32dfaafbbcf96ebf,
0x099bde2857145714,
0x7adaf876320ac9bf,
0x9afc7ea2f4b4f4b4,

这是最简单的实现方式,请参考并根据您的逻辑进行优化。

【讨论】:

    【解决方案2】:
    grep -oE '[a-z0-9]{4}' input.txt | awk '{ l = l $0; if ((NR % 4) == 0){ print "0x" l ","; l = "" }}'
    
    0x3c26d3ac27d4c03f,
    0x5dc452421d96bbbf,
    0x4b7c84bf51fbc73f,
    0xf7847a8ebee9c6bf,
    0x32dfaafbbcf96ebf,
    0x099bde285714bcbf,
    0x7adaf876320ac9bf,
    0x9afc7ea2f4b4c93f,
    

    【讨论】:

    • 谢谢,它有效,但我需要在 51750 行上运行此命令,它在终端中不起作用,所以如果可以创建另一个文件作为输出值保存在那里,或者在同一个文件中编辑
    • 将输出保存到新文件中
    【解决方案3】:

    命令

    sed -e 's/.\{20\}/&\n/g' filename | sed 's/ //g;s/.*/0x&,/g' 
    

    输出

    0x3c26d3ac27d4c03f,
    0x5dc452421d961d96,
    0x4b7c84bf51fbc73f,
    0xf7847a8ebee9bee9,
    0x32dfaafbbcf96ebf,
    0x099bde2857145714,
    0x7adaf876320ac9bf,
    0x9afc7ea2f4b4f4b4,
    

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 1970-01-01
      • 2021-02-03
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2013-08-05
      相关资源
      最近更新 更多