我需要更改一些行我使用此while循环另一种格式。sed虽然循环文本格式
while IFS= read -r line;
do
var=$(echo "$line" | grep -oE "http://img[0-9].domain.xy/t/[0-9][0-9][0-9]/[0-9][0-9][0-9]/" | uniq);
echo "$line" | sed -e 's|http://img[0-9].domain.xy/t/[0-9][0-9][0-9]/[0-9][0-9][0-9]/||g' -e "s|.*|&"${var}"|g" >> newFile;
done < file;
改变这种格式
<iframe src="http://domain.xy/load.php?file=2259929" frameborder="0" scrolling="no"></iframe>|http://img9.domain.xy/t/929/320/1_2259929.jpg;http://img9.domain.xy/t/929/320/2_2259929.jpg;http://img9.domain.xy/t/929/320/3_2259929.jpg;http://img9.domain.xy/t/929/320/4_2259929.jpg;http://img9.domain.xy/t/929/320/5_2259929.jpg;http://img9.domain.xy/t/929/320/6_2259929.jpg;http://img9.domain.xy/t/929/320/7_2259929.jpg;http://img9.domain.xy/t/929/320/8_2259929.jpg;http://img9.domain.xy/t/929/320/9_2259929.jpg;http://img9.domain.xy/t/929/320/10_2259929.jpg|13m5s
,并给出我的输出。
<iframe src="http://domain.xy/load.php?file=2259929" frameborder="0" scrolling="no"></iframe>|1_2259929.jpg;2_2259929.jpg;3_2259929.jpg;4_2259929.jpg;5_2259929.jpg;6_2259929.jpg;7_2259929.jpg;8_2259929.jpg;9_2259929.jpg;10_2259929.jpg|13m5s|http://img9.domain.xy/t/929/320/
所有的作品都是正确的!
但也有一个时间值,我想改变。 13m5s到00:13:5或更好的其他13m5s到00:13:05
我尝试在循环结束时使用另一个grep + sed命令。
while IFS= read -r line;
do
var=$(echo "$line" | grep -oE "http://img[0-9].domain.xy/t/[0-9][0-9][0-9]/[0-9][0-9][0-9]/" | uniq);
echo "$line" | sed -e 's|http://img[0-9].domain.xy/t/[0-9][0-9][0-9]/[0-9][0-9][0-9]/||g' -e "s|.*|&"${var}"|g" >> newFile;
done < file;
grep -oE "[0-9]*m[0-9]*[0-9]s" newFile | sed -e 's|^|00:|' -e s'|m|:|' -e s'|s||'
这给了我只有输出的数字不是完整的行。
00:13:5
00:3:18
00:1:50
等
我怎样才能得到充分的线,只是改变13m5s至00:13 :5?
如果只是在没有grep的while循环之后使用sed,它会更改错误的字母。并把00:放在每一行的开头。
什么是最好的处理方法。我认为它是最好的将命令集成到现有的循环中。但我已经尝试了许多不同的变化,结果。
THX帮助
THX
如果你想要整行而不是匹配的部分,你为什么使用'-o'选项? – Barmar
@ barmar如果-o不是sed,输出仍然是13m5s。所以我想我需要grep完全匹配,然后运行sed命令。 – Malik