SHELL21 格式化输出

2023-12-13 06:55:39
awk 'BEGIN{FS=""}{
    for(i=1;i<=NF;i++){
        if((NF-i)%3==0&&i!=NF) 
            printf $i",";
        else printf $i
    };
    printf "\n"}' nowcoder.txt

这个 AWK 命令的目的是对文本文件 nowcoder.txt 中的每一行进行处理,将每三个字符插入一个逗号,以增强可读性。以下是对代码的逐行解释:

BEGIN{FS=“”}:这是 AWK 的 BEGIN 块,用于在处理文本行之前执行一些初始化操作。FS=“” 表示将字段分隔符设置为空字符串,这样 AWK 会将每个字符都视为一个独立的字段。

{…}:这是主体部分,用于处理每一行。

for(i=1;i<=NF;i++):这是一个循环,遍历当前行的每个字符,其中 NF 表示字段数量,因为将字段分隔符设置为空字符串,所以每个字符被视为一个字段。

if((NF-i)%3==0 && i!=NF):这是一个条件语句,检查当前字符的位置是否是每三个字符的位置(且不是行末尾的字符)。

(NF-i)%3==0:表示当前字符是每三个字符的位置。
i!=NF:确保当前字符不是行末尾的字符。
printf $i",":如果当前字符符合条件,就打印当前字符并跟一个逗号。

else printf $i:如果当前字符不符合条件,就直接打印当前字符。

printf “\n”:在处理完一行后,打印一个换行符,使得下一行输出到新的一行。

综合起来,这个 AWK 命令通过将每三个字符插入一个逗号来格式化文本行,以增强可读性。

文章来源:https://blog.csdn.net/m0_48711099/article/details/134957188
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。