首页 > 试题广场 >

将字段逆序输出文件的每行

[编程题]将字段逆序输出文件的每行
  • 热度指数:18353 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
编写一个shell脚本,将文件nowcoder.txt中每一行的字段逆序输出,其中字段之间使用英文冒号:相分隔。
假设nowcoder.txt内容如下:
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
你的脚本应当输出
/usr/bin/false:/var/empty:Unprivileged User:-2:-2:*:nobody
/bin/sh:/var/root:System Administrator:0:0:*:root

输入描述:
1


输出描述:
1
示例1

输入

nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh

输出

/usr/bin/false:/var/empty:Unprivileged User:-2:-2:*:nobody
/bin/sh:/var/root:System Administrator:0:0:*:root
awk -F ":" '{
    for(i=1;i<=NF;i++){
        res[NF+1-i] = $i
    }
    msg = ""
    for(k in res){
        msg = msg (msg == "" ? "":":") res[k]
    }
    print msg
}'
数组反向存起来,再拼接成字符串
发表于 2021-11-26 23:45:00 回复(1)
awk -F ':' '{
	for (i = NF; i >= 2; i--) {
		printf("%s:", $i)
	}
	print($1)
 }'

发表于 2022-01-26 04:59:06 回复(0)
awk -F ":" '
{
    sum = ""; 
    for(i = NF; i >0 ;i--){
        if(i>1)
            sum = sum""$i":"; 
        else
            sum = sum""$i;
    }  
    print sum;
}'

发表于 2022-09-07 18:55:21 回复(0)
awk 'BEGIN{FS=OFS=":"}{for(i=NF;i>1;i--){printf $i":"}print $1}'
发表于 2022-03-01 11:32:43 回复(0)
awk 'BEGIN{FS=":"}{for(i=NF;i>1;i--){printf "%s:",$i}}{print $1}' nowcoder.txt
发表于 2021-12-31 11:00:46 回复(0)
awk -F: '{for(i=NF;i>=1;i--){printf "%s:",$i} printf("\n")}' nowcoder.txt |sed 's/\:$//g'
发表于 2021-12-09 10:21:51 回复(1)
while read line
do
 echo $line| awk -F":" '{
  for (i=NF;i>0;i--){
    if (i==1){
         printf ($1 "\n"); break
       }
    printf ($i ":")
     }
 }'


done < nowcoder.txt

发表于 2021-11-29 14:32:29 回复(0)
awk -F ':''{
        for(i=NF;i>=1;i--){
                if(i==1){
                printf $i
                break;
                }      
                printf  $i ":"
        }
        print ""
}' nowcoder.txt
发表于 2021-11-28 01:54:08 回复(0)
这题目判断不知道依据的是什么,我本地是正常的,不知道为啥这里一直提示结果不对
cat nowcoder.txt | while read line
do
echo $line |tr ':' '\n' | tac |tr '\n' ':' | sed 's/:$//'
done


发表于 2021-11-20 19:55:23 回复(1)
awk -F: '{for(i=NF;i>1;i--){printf("%s:",$i)}print $1}'

发表于 2025-02-27 00:07:14 回复(0)
awk -F ":" '
{
    str = $NF;
    for(i = NF-1;i >= 1;i--){
        str = str":"$i
    };
    print str;
}
'

发表于 2025-01-16 23:00:27 回复(0)
awk -F ':' -v OFS=':' '{print $7,$6,$5,$4,$3,$2,$1}' nowcoder.txt
发表于 2025-01-07 18:47:44 回复(0)
awk -F ':' '{
    for(i = NF; i > 0; i--){
        printf($i"%s", i == 1 ? "\n" : ":")
    }
}'


发表于 2024-12-07 19:16:38 回复(0)
awk -F ':' -v OFS=':' '{print $7,$6,$5,$4,$3,$2,$1}' nowcoder.txt

发表于 2024-10-25 21:16:08 回复(0)
#!/bin/bash

IFS=':'
while read -r -a line; do
rev=()
for ((i = 0; i < ${#line[@]}; i++)); do
rev=("${line[$i]}" "${rev[@]}")
done
echo "${rev[*]}"
done

发表于 2024-07-02 16:51:42 回复(0)
awk '
    BEGIN{
        FS=":"
    }
    {
        for(i=NF;i>1;i--){
            printf $i":"
        }
        printf $1"\n"
    }
'
发表于 2024-06-30 16:06:16 回复(0)
awk '
BEGIN {
    FS = ":"
}
{
    for(i = NF; i >= 2; i--) {
        printf "%s:", $i
    }
    printf "%s\n",$1
}
'

发表于 2024-06-18 20:44:06 回复(0)
awk -F ':' '{for(i=NF;i>0;i--){printf $i ":"} printf "\n" }' nowcoder.txt | sed -n 's/:$//gp'
发表于 2024-06-11 10:25:58 回复(0)

awk -F: '{for(i=NF;i>=2;i--){printf $i":"}print $i}' nowcoder.txt

发表于 2024-04-30 14:01:16 回复(0)
XBG头像 XBG
awk -F ":" '
{
    for(i=NF;i>1;i--){
        printf $i":"
    }
    print $1
}
'

发表于 2023-10-27 16:11:06 回复(0)