【问题标题】:How to split a delimited string to compose a dd command in bash?如何拆分分隔字符串以在 bash 中组成 dd 命令?
【发布时间】:2020-10-09 04:45:24
【问题描述】:

我想读取一个类似于下图所示的配置文件:

source/path:blocksize,offset,seek,count
source/path2:blocksize,offset,seek
source/path3:blocksize,offset

其中source/pathsource/path2source/path3 是一些二进制文件的路径,而 offset、seek、count 和 blocksize 分别是 dd 命令的值。
请注意,变量可能会有所不同,例如某些二进制文件可能没有搜索或dd 命令的搜索和计数值。

我应该如何拆分以上行来编写dd这样的命令
dd if=${source/path} bs=${blocksize} seek=${seek} count=${count}
dd if=${source/path} bs=${blocksize} seek=${seek}
dd if=${source/path} bs=${blocksize}

如果需要对上述格式进行修改以便于解析,那是可以的,因为我已经用尽了我幼稚的头脑所能想到的所有可能性。

【问题讨论】:

    标签: string bash split dd


    【解决方案1】:

    希望这会有所帮助:

    $ cat <<EOF | while read line; do arr=($(sed 's/[,:]/ /g' <<< $line)); echo "source:${arr[0]}  block:${arr[1]} offset:${arr[2]} seek:${arr[3]} count:${arr[4]}"; done
    source/path:blocksize,offset,seek,count
    source/path2:blocksize,offset,seek
    source/path3:blocksize,offset
    EOF
    source:source/path  block:blocksize offset:offset seek:seek count:count
    source:source/path2  block:blocksize offset:offset seek:seek count:
    source:source/path3  block:blocksize offset:offset seek: count:
    

    总体思路:

    #!/usr/bin/env bash
    
    your_command | while read line; do 
            arr=($(sed 's/[,:]/ /g' <<< $line)); 
            echo "source:${arr[0]}  block:${arr[1]} offset:${arr[2]} seek:${arr[3]} count:${arr[4]}"
            
            # Do whatever processing & validation you want here
            # access from array : ${arr[0]}....${arr[n]}
            #
    
     done
    

    如果您有文件,那么:

    #!/usr/bin/env bash
    
    while read line; do
           arr=($(sed 's/[,:]/ /g' <<< $line)); 
           echo "source:${arr[0]}  block:${arr[1]} offset:${arr[2]} seek:${arr[3]} count:${arr[4]}"
            
            # Do whatever processing & validation you want here
            # access from array : ${arr[0]}....${arr[n]}
            #
    
    done < "path/to/your-file"
    

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 2011-10-03
      • 1970-01-01
      • 2020-05-08
      • 2014-02-19
      相关资源
      最近更新 更多