首页 > 试题广场 >

转置文件的内容

[编程题]转置文件的内容
  • 热度指数:26376 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
写一个bash脚本来转置文本文件nowcoder.txt中的文件内容。
文件中每行列数相同,并且每个字段由空格分隔
示例:
假设 nowcoder.txt 内容如下:
job salary
c++ 13
java 14
php 12

你的脚本应当输出(以词频升序排列):
job c++ java php
salary 13 14 12
示例1

输入

job salary
c++ 13
java 14
php 12

输出

job c++ java php
salary 13 14 12
#!/bin/bash
awk '
{
    for (i = 1; i <= NF; i++) {
        matrix[NR, i] = $i
    }
    if (NF > max_field) {
        max_field = NF
    }
}
END {
    for (i = 1; i <= max_field; i++) {
        for (j = 1; j <= NR; j++) {
            if (matrix[j, i] != "") {
                printf "%s ", matrix[j, i]
            }
            else{
            printf " "
            }
        }
        printf "\n"
    }
}'
发表于 2024-12-05 14:57:40 回复(0)
awk '{print $1}' nowcoder.txt  | xargs -n 4
awk '{print $2}' nowcoder.txt  | xargs -n 4
发表于 2024-02-29 15:30:11 回复(0)
#!/bin/bash
n=`awk 'NR==1{print NF}' nowcoder.txt`

for i in `seq 1 $n`; do
    awk -v col_cnt=$i '{print $col_cnt}' nowcoder.txt|xargs
done

发表于 2024-02-16 19:05:53 回复(0)
#!/bin/bash

cat nowcoder.txt | awk '{a[NR]=$2}{printf "%s ",$1
} END {
    for (i in a){
    printf "%s ",a[i]}
}'

发表于 2023-11-11 04:05:16 回复(0)

  1. awk '{
        if($0)
        for(i=1;i<=NF;i++)
            map[$i]++
    }END{
        for(j in map)
            printf("%s %d\n",j,map[j]);
    }' < nowcoder.txt | sort -nk2 |
    awk '{
        map[n++]=$1;
    }END{
        len=length(map)
        if(len == 1){
            printf("%s\n",map[0]);
        }else{
            m=1;
            #求最大约数
            for(j=len-2;j<len;j--){
                if(len % (j+1) == 0){
                    m=j+1;
                    break;
                }
            }

            for(k=0; k < len; k++){
                if(k != 0 && k % m == 0){
                    printf("\n");
                }
                printf("%s ", map[k]);
            }
        }
    }'

发表于 2023-09-22 11:33:13 回复(0)
chatgpt编写的bash
#!/bin/bash

awk '
{ 
    for (i = 1; i <= NF; i++)  {
        a[NR, i] = $i
    }
}
NF>p { p = NF }
END {    
    for (j = 1; j <= p; j++) {
        str=a[1, j]
        for (i = 2; i <= NR; i++){
            str=str" "a[i, j];
        }
        print str
    }
}' nowcoder.txt


发表于 2023-02-09 15:05:41 回复(0)
for i in `seq 1 $(awk 'END {print NF}' nowcoder.txt)`
do   
    awk -v n=$i '{print $n}' nowcoder.txt|xargs
done

发表于 2023-01-06 19:34:48 回复(0)
#!/bin/bash
i=0
while read line
do
    a=($line)
    b1[$i]=${a[0]}
    b2[$i]=${a[1]}
    let i++
done <nowcoder.txt
echo "${b1[@]}"
echo "${b2[@]}"


发表于 2022-11-12 15:59:07 回复(0)
cat nowcoder.txt | awk '{print $1}' | xargs && cat nowcoder.txt | awk '{print $2}' | xargs

发表于 2022-08-31 00:03:22 回复(0)
awk '{for(i=1;i<=NF;i++){a[i]=a[i]" "$i}} END{for(i in a){print a[i]}}' nowcoder.txt
发表于 2022-08-27 17:43:20 回复(0)
awk '{print $1}' nowcoder.txt && awk '{print $2} nowcoder.txt
发表于 2022-08-08 18:09:30 回复(0)
cat nowcoder.txt | awk '{print $1}'|tr "\n" " " # 或者cat nowcoder.txt | awk '{printf  $1" "}'
cat nowcoder.txt | awk '{print $2}'|tr "\n" " ""
发表于 2022-07-17 22:48:25 回复(0)
#!/bin/bash

awk '
{
    a[i++]=$1
    b[j++]=$2
}
END{
    for(k=0;k<i;k++){
        printf("%s ", a[k])
    }
    printf("\n")
    for(k=0;k<i;k++){
        printf("%s ", b[k])
    }
}
' nowcoder.txt
发表于 2022-07-11 23:15:24 回复(0)
#!/bin/bash
echo `awk '{print $1}' nowcoder.txt` && echo `awk '{print $2}' nowcoder.txt `
发表于 2022-07-11 23:04:57 回复(0)
awk -v ORS=" " '{a[NR]=$1;b[NR]=$2} END {for(i in a){print a[i]};print "\n";for(j in b){print b[j]}}' nowcoder.txt
发表于 2022-06-09 22:55:50 回复(0)
#!/bin/bash

a=$( cat nowcoder.txt | awk '{print $1}' )
b=$( cat nowcoder.txt | awk '{print $2}' )
echo $a
echo $b
发表于 2022-05-25 09:42:25 回复(0)
awk '{for(i=1;i<=NF;i++)a[i]=a[i]" "$i}END{for(i in a)print a[i]}'

发表于 2022-05-09 14:07:39 回复(0)
awk '{printf ("%s ",$1);s[i++]=$2}END{printf ("\n");for(i in s)printf ("%s ",s[i])}' nowcoder.txt
发表于 2022-04-06 21:17:53 回复(0)
#!/usr/bin/env bash
awk '{for(i=1;i<=NF;i++)a[i]=a[i]" "$i}END{for(j in a) print a[j]}' nowcoder.txt | sort -k1

发表于 2022-03-25 10:43:04 回复(0)
#! /bin/bash
#将所有的内容先转至成一行,每个字段空格隔开
#双数的字段为第二行,单数的为第一列
awk '{for(i=1; i<=NF;i=i+1) row = row $i " "}END{print row}' | awk '
{ for(i=1;i<=NF;i=i+1)
    if(i%2==1) print $i

END {for(i=1;i<=NF;i=i+1)
    if(i%2==0) print $i
}'
发表于 2022-03-22 22:11:03 回复(0)