我有一个包含两行对句的文件,标题行以//
开始,以|
包围的行号结束,后面是一行长度可变的文本。下面是一个例子,其中...
表示文件以连续的行号继续许多行。
// * * - - - * |1|
textextextextextextextext
// *- *-* * |2|
textextextextextextextexttextextextext
...
// * - * -* |41232|
textextextextextextext
我想找到行号,然后将标题行替换为>linenumber
。
>1
textextextextextextextext
>2
textextextextextextextexttextextextext
...
>41232
textextextextextextext
我知道这可能涉及到/s
和sed
或awk
与反向引用,但我只是似乎不能使它工作。
3条答案
按热度按时间olqngx591#
sed一行程序:
jjhzyzn02#
是的,sed是一个很好的工具:
说明:
\%^//.*\|[[:digit:]]+\|%
这是一个地址,也就是说下面的s///
命令只会在匹配的行上运行。它在一行的开头匹配//
,在后面的某个地方,竖线之间必须有一个数字。ny6fqffe3#
使用任意awk:
上面假设
text
从不包含|
s。