考虑这个示例文件:
01
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters.
02
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters
Alphabetic characters,
03
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters,
我想在一行文字中添加字符串。
01
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters.</font>
02
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters
Alphabetic characters,</font>
03
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters,</font>
我不清楚如何排除第一行。有什么建议吗?
答案 0 :(得分:2)
这就是我认为你真正想要做的事情:
$ cat file
01
00:00:00,000 --> 00:00:00,000
Alphabetic characters.
02
00:00:00,000 --> 00:00:00,000
Alphabetic characters
Alphabetic characters,
03
00:00:00,000 --> 00:00:00,000
Alphabetic characters,
$ cat tst.awk
/^[[:alpha:]]/ { buf = (buf ? buf RS : "") $0; next }
buf { printf "<fc=ff00>%s</font>\n", buf; buf="" }
{ print }
END { if (buf) printf "<fc=ff00>%s</font>\n", buf }
$ awk -f tst.awk file
01
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters.</font>
02
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters
Alphabetic characters,</font>
03
00:00:00,000 --> 00:00:00,000
<fc=ff00>Alphabetic characters,</font>
答案 1 :(得分:1)
如果你想使用sed:
sed -n -e '/^<fc=ff00>[a-zA-Z ,.]\+/! p;' \
-e '/^<fc=ff00>[a-zA-Z ,.]\+/ { :start $! N; /\n[a-zA-Z ,.]\+$/ b start; s/\(.*\)\n/\1<\/font>\n/p; $ s/\(.*\)/\1<\/font>/p}' \
file
如果您想要进行言论,请随时提出。
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed 'N;/[[:alpha:]].*\n[^[:alpha:]]*$/s/\n/<\/font>&/;$s/$/<\/font>/;P;D' file
一次读取两行,如果第一行包含字母字符而第二行不包含,则在换行符之前插入所需的字符串。始终在文件的最后一行执行上述替换。然后打印并删除两行中的第一行,并在下一个循环中追加另一行,依此类推。