将前缀添加到shell之前的行中

时间:2017-08-08 14:46:05

标签: shell awk grep lines prefix

我正在执行以下命令,以获取必须从其上方的行添加前缀的行,如下所示:

small_size

我得到的内容如下:

 grep -B1 "^E[0-9]"

如何为以E [字母数字]开头的行添加前缀,使文件变为

ENSG00000165661:E5.1
E6.1
--
ENSG00000174776:E7.1
E8.1
--
ENSG00000122482:E7.2
E8.1

1 个答案:

答案 0 :(得分:5)

SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX('1.1;1.6;1.4;1.9;1.12',';',i+1),';',-1) x FROM ints x; +------+ | x | +------+ | 1.1 | | 1.6 | | 1.4 | | 1.9 | | 1.12 | +------+ 救援!

awk

未经测试,因为没有可测试的数据

<强>解释

当模式匹配时,打印存储在变量 awk -F: '/^E[0-9]/{print p0; print p1 FS $0} {p1=$1; p0=$0}' file 中的上一行;然后打印上一行的第一个字段(p0),字段分隔符(p1)和当前行(FS)。下一个语句将为每一行设置$0p0变量,无论它是否会被使用,因为没有前瞻。