Ais*_*rni 0 shell awk grep lines prefix
我正在执行以下命令来获取必须从其上方的行添加前缀的行,如下所示:
grep -B1 "^E[0-9]"
Run Code Online (Sandbox Code Playgroud)
我得到的东西如下:
ENSG00000165661:E5.1
E6.1
--
ENSG00000174776:E7.1
E8.1
--
ENSG00000122482:E7.2
E8.1
Run Code Online (Sandbox Code Playgroud)
如何为以E [字母数字]开头的行添加前缀,使文件成为
ENSG00000165661:E5.1
ENSG00000165661:E6.1
ENSG00000174776:E7.1
ENSG00000174776:E8.1
ENSG00000122482:E7.2
ENSG00000122482:E8.1
Run Code Online (Sandbox Code Playgroud)
awk 救援!
awk -F: '/^E[0-9]/{print p0; print p1 FS $0} {p1=$1; p0=$0}' file
Run Code Online (Sandbox Code Playgroud)
未经测试,因为没有可测试的数据
说明
当模式匹配时打印存储在变量中的前一行p0; 然后打印p1上一行的第一个字段(),字段分隔符(FS)和当前行($0).下一个语句将为每一行设置p0和p1变量是否将被使用,因为没有预见.