来自行:
< div style="left:0px; top:0px; width:100%; height:63px; border-style: solid; border-width: 1px; background-color:#FCF0C4; border-color:#E87511; border-style: solid; border-width: 1px; position:absolute;" >
我想得到(价值可能会有所不同)
#FCF0C4
然后将其粘贴到另一行
< div style="left:2px; top:32px; width:744px; height:27px; display:block; border-style: solid; border-width: 1px; position:absolute; overflow:hidden; background-color:#ffffff;" >
而不是
#ffffff
答案 0 :(得分:2)
怎么样:
sed 's/^.*background-color:\(#......\).*/s_background-color:#ffffff_background-color:\1_/' INFILE > TMPSED
sed -if TMPSED ANOTHERFILE
如果它们位于同一文件中,则为awk
的另一个解决方案。线的标识可能是正则表达式,行号等。
awk '/IDENTIFY_YOUR_LINE_TO_COPY_COLOR/ { color=gensub(".*backround-color:(.......).*","\\1","g",$0) }
/IDENTIFY_YOUR_LINE_TO_COPY_TO {print gensub("^(.*backround-color:)#ffffff;(.*)","\\1" color "\\2","g",$0)}' INPUTFILE > OUTPUTFILE
答案 1 :(得分:2)
您是否使用grep
收集这些行?或者你想要解决方案吗?要在同一个文件中更改或不同的文件?有几个文件要编辑吗?什么决定了要抓取哪一行以及要编辑哪一行?您缺少正确的解决方案的许多重要细节。
离开你在这里的东西:
TMPCOL=$(get line somehow | sed -r -n 's/background-color:#(.*);/\1/ p')
sed -i "s/background-color:#.*;/background-color:#$TMPCOL;/" fileToFix
答案 2 :(得分:2)
捕捉颜色:
COL=$(echo '< div ... >' | sed -r 's/.*background-color:#([0-9A-Fa-f]{1,6});.*/#\1/')
将其粘贴到目标中:
echo '< div ... >' | sed -r 's/(.*background-color:#)([0-9A-Fa-f]{1,6})(;.*)/\1'$COL'\3/'
结果:
< div style="left:2px; top:32px; width:744px; height:27px; display:block; border-style: solid; border-width: 1px; position:absolute; overflow:hidden; background-color:##FCF0C4;" >