题解 | #将字段逆序输出文件的每行#
将字段逆序输出文件的每行
https://www.nowcoder.com/practice/e33fff83fd384a21ba67f3104fb8d646
awk -F ":" '{s="";for(i=NF;i>0;i--){s=s":"$i};print substr(s,2)}' nowcoder.txt
题解里的一个大哥的,这个很简洁还没报错。
awk处理文件 nowcoder.txt 中的每一行。让我们来详细解释一下这个命令:
- -F ":":这部分指定了分隔符,即冒号。
- '{s="";for(i=NF;i>0;i--){s=s":"$i};print substr(s,2)}':这是一个 awk 脚本,它对每一行的字段进行操作。具体步骤如下:首先,创建一个空字符串变量 s。然后,从最后一个字段(NF)开始,逐个将字段内容加入 s 中,每个字段之间用冒号连接。最后,使用 substr(s, 2) 去掉 字符串s开头的冒号,并将结果输出。
- s 是一个字符串变量。
- 2 是截取的起始位置。在这里,我们希望去掉字符串开头的冒号,所以从第二个字符开始截取。
- 结果是去掉了开头的冒号的字符串。
例如,如果我们有一个字符串 s,内容为 ":apple:banana:cherry"
,应用 substr(s, 2)
后,结果将是 "apple:banana:cherry"
,即去掉了开头的冒号。