Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从行中获取字符串,然后在bash中将其粘贴到另一行_Linux_Bash - Fatal编程技术网

Linux 从行中获取字符串,然后在bash中将其粘贴到另一行

Linux 从行中获取字符串,然后在bash中将其粘贴到另一行,linux,bash,Linux,Bash,从第行开始: 我想获得(值可能不同) #FCF0C4 然后将其粘贴到另一行 而不是 #ffffff关于: sed 's/^.*background-color:\(#......\).*/s_background-color:#ffffff_background-color:\1_/' INFILE > TMPSED sed -if TMPSED ANOTHERFILE 另一个解决方案是使用awk,如果它们在同一个文件中。行的标识可能是正则表达式、行号等 awk '/IDENTI

从第行开始:

我想获得(值可能不同)
#FCF0C4
然后将其粘贴到另一行

而不是

#ffffff

关于:

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
那么:

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

您是否使用
grep
收集这些行?或者你想让解决方案做到这一点?要更改的行是在同一个文件中还是在不同的文件中?有几个文件要编辑吗?什么决定了抓取哪一行和编辑哪一行?对于正确的解决方案,您缺少许多重要的细节

离开这里的一切:

TMPCOL=$(get line somehow | sed -r -n 's/background-color:#(.*);/\1/ p')
sed -i "s/background-color:#.*;/background-color:#$TMPCOL;/" fileToFix

您是否使用
grep
收集这些行?或者你想让解决方案做到这一点?要更改的行是在同一个文件中还是在不同的文件中?有几个文件要编辑吗?什么决定了抓取哪一行和编辑哪一行?对于正确的解决方案,您缺少许多重要的细节

离开这里的一切:

TMPCOL=$(get line somehow | sed -r -n 's/background-color:#(.*);/\1/ p')
sed -i "s/background-color:#.*;/background-color:#$TMPCOL;/" fileToFix
捕捉颜色:

COL=$(echo '< div ... >' | sed -r 's/.*background-color:#([0-9A-Fa-f]{1,6});.*/#\1/')
COL=$(echo''| sed-r/*背景色:#([0-9A-Fa-f]{1,6});./#\1/)
将其粘贴到目标:

echo '< div ... >' | sed -r 's/(.*background-color:#)([0-9A-Fa-f]{1,6})(;.*)/\1'$COL'\3/'
echo''|sed-r的/(.*背景色:#)([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;" >
捕捉颜色:

COL=$(echo '< div ... >' | sed -r 's/.*background-color:#([0-9A-Fa-f]{1,6});.*/#\1/')
COL=$(echo''| sed-r/*背景色:#([0-9A-Fa-f]{1,6});./#\1/)
将其粘贴到目标:

echo '< div ... >' | sed -r 's/(.*background-color:#)([0-9A-Fa-f]{1,6})(;.*)/\1'$COL'\3/'
echo''|sed-r的/(.*背景色:#)([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;" >

也许你想生成一个css样式表,而不是像我在大约100个css文件中描述的那样,我必须进行更改。制作新的样式表是一件痛苦的事情。也许你会想要生成一个css样式表,而不是像我在100个css文件中描述的那样。制作新的样式表是件痛苦的事。在“#FCF0C4”的位置上,它可能有各种值(例如#FCFF24等)。我想获取此值,并将其粘贴到第二行。在“#FCF0C4”的位置中,它可能是各种值(例如#FCFF24等)。我想得到这个值,然后把它粘贴到第二行。有很多css文件需要编辑。两行都在同一个文件中。在每个文件中,您必须从第一行获取颜色值,然后将其粘贴到文件中某处的第二行。第一行看起来总是像“
”。有一点总是不同的是颜色值。第二行总是一样的。
*将不起作用,因为sed是贪婪的,并且会消耗任何直到最后一个分号的内容。有许多css文件需要编辑。两行都在同一个文件中。在每个文件中,您必须从第一行获取颜色值,然后将其粘贴到文件中某处的第二行。第一行看起来总是像“
”。有一点总是不同的是颜色值。第二行总是一样的。
*将不起作用,因为sed是贪婪的,并且会消耗任何直到最后一个分号的内容。