用单个csv文件用sed替换html文件中的几行

时间:2017-06-27 20:50:45

标签: html bash csv sed sh

我想使用sed命令替换html文件中的几行,从csv文件中获取信息。

这是我要编辑的html(Test.html)的摘要,(" / ** /"是要编辑的行):

    series: [{
        name: 'Alerta',
        color: "orange",
/*1*/   data: [4, 3, 4]
        }, {
        name: 'Pre-Emergencia',
        color: "red",
/*2*/   data: [0, 0, 0]
        }, {
        name: 'Emergencia',
        color: "purple",
/*3*/   data: [0, 0, 0]
            }]

这是我想要获取新值的CSV(Test.csv):

/*1*/       data: [3, 5, 5]
/*2*/       data: [1, 3, 1]
/*3*/       data: [10, 6, 4]

这是我现在正在使用的脚本(它仅用于替换一行,从一个csv文件中包含一行)

export TEST1="$(sed 's/ //g' Test.csv)" 
export TEST2="$(sed 's/ //g' Test.csv)" 
export TEST3="$(sed 's/ //g' Test.csv)"
sed -i -e '/*1*/c\'"$TEST1"'' Test.html
sed -i -e '/*2*/c\'"$TEST2"'' Test.html
sed -i -e '/*2*/c\'"$TEST2"'' Test.html

我错了?该脚本应如何运作? 非常感谢!

2 个答案:

答案 0 :(得分:0)

使用单个 awk 命令:

    series: [{
        name: 'Alerta',
        color: "orange",
/*1*/   data: [3, 5, 5]
        }, {
        name: 'Pre-Emergencia',
        color: "red",
/*2*/   data: [1, 3, 1]
        }, {
        name: 'Emergencia',
        color: "purple",
/*3*/   data: [10, 6, 4]
            }]

输出:

Sub toggggle()
With Range("A:A").Cells.SpecialCells(xlCellTypeBlanks)
    .EntireRow.Hidden = Not .EntireRow.Hidden
End With
End Sub

答案 1 :(得分:0)

我将Test.csv转换为sed命令列表并将其传递给sed:

sed -e 's/\*/\\*/g' -e 's|data.*$|s/data.*$/&/|' Test.csv | sed -f- Test.html

这是做什么的:

  • -e 's/\*/\\*/g'将Test.csv中的每个*转换为\*
  • -e 's|data.*$|s/data.*$/&/|'data: [3, 5, 5]变为s/data.*$/data: [3, 5, 5]/
  • sed -f- Test.html从管道中获取sed命令并在Test.html上运行

sed -e 's/\*/\\*/g' -e 's|data.*$|s/data.*$/&/|' Test.csv的中间输出是:

/\*1\*/       s/data.*$/data: [3, 5, 5]/
/\*2\*/       s/data.*$/data: [1, 3, 1]/
/\*3\*/       s/data.*$/data: [10, 6, 4]/

因此,对Test.html使用上述命令会获得此输出:

    series: [{
        name: 'Alerta',
        color: "orange",
/*1*/   data: [3, 5, 5]
        }, {
        name: 'Pre-Emergencia',
        color: "red",
/*2*/   data: [1, 3, 1]
        }, {
        name: 'Emergencia',
        color: "purple",
/*3*/   data: [10, 6, 4]
            }]