Awk 在每行前面加一个数字,当\";也在被引用的记录中

Awk 在每行前面加一个数字,当\";也在被引用的记录中,awk,gawk,Awk,Gawk,我正在运行awk脚本,如下所示: find ~/dir/ -regextype sed -regex '.*\.[0-9]\{3\}\.txt' -exec ~/script.awk {} \; 它通过从find找到的文件中提取数据来生成行。我希望每一行前面都有一个整数组成一个序列,即第一行乘以1,第二行乘以2等。问题是awk生成的其中一列中有新的行符号\n,即来自awk的一行可能看起来像: "col1" col2 "col3_\n_col3_continued_\n_more_col3" "

我正在运行
awk
脚本,如下所示:

find ~/dir/ -regextype sed -regex '.*\.[0-9]\{3\}\.txt' -exec ~/script.awk {} \;
它通过从
find
找到的文件中提取数据来生成行。我希望每一行前面都有一个整数组成一个序列,即第一行乘以1,第二行乘以2等。问题是
awk
生成的其中一列中有新的行符号
\n
,即来自awk的一行可能看起来像:

"col1" col2 "col3_\n_col3_continued_\n_more_col3" "col4"
这些行是在脚本的
结尾部分构建的:

END {
    method=""
    i=1
    for (i=1;i<nm;i++) {
        if (i==1) {
            method=methodarr[i]
        }
        else {
            method=method"\n"methodarr[i]
        }
    }
    method="\""method"\""
    printf "%s %s %s %s\n",date,time,method,"\""FILENAME"\""
}
结束{
method=“”
i=1

对于(i=1;i来说,我认为最简单的解决方案是在每行前面加上一个特殊的字符序列,然后用另一个AWK脚本替换为数字

例如,替换代码:

printf "%s %s %s %s\n",date,time,method,"\""FILENAME"\""
与:

printf“%s%s%s%s\n”、日期、时间、方法、“文件名”
然后通过此脚本运行输出,用数字替换

awk '$1 == "<LINE_N>" { cnt += 1; printf cnt; $1=""; } 1;'
awk'$1==''{cnt+=1;printf cnt;$1=”“;}1;'
awk '$1 == "<LINE_N>" { cnt += 1; printf cnt; $1=""; } 1;'