以下是单个文件中包含的一些表数据的格式:
;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;
(5436rowsaffected)
(returnstatus=0)
Returnparameters:
;;
;5436;
(1rowaffected)
;;;
;-------;-----------;
;grepkey;5436;
(1rowaffected)
笔记:上图grepkey=5436
(表中存在的记录计数)。
以下是预期输出:
1;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
2;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
5436;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;
我需要上述格式的数据。我想为行号添加前缀并排除文件末尾存在的附加数据,例如表中的记录数等。
另外我想使用awk
.
答案1
我不确定我是否理解正确。我认为您希望将行号添加到每行并删除第一个空行之后的所有内容。如果是这样,这将做到这一点:
awk '{if($1){print NR$0}else{exit}}' file
解释
if($1){print NR$0}
:如果该行有第一个字段(检查该行是否为空的简单方法),则打印当前行号 (NR
) 和行$0
。else{exit}
:在第一个空行处停止脚本。
答案2
awk -v n=$( grep -oP '(?<=grepkey;)\d+' file ) 'NR <= n {print NR ";" $0}' file
在这里,我使用 GNU grep 命令从文件中提取“grepkey”值,然后使用 awk 脚本打印文件的前“n”行,并在前面添加行号。