首页 > 试题广场 >

转置文件的内容

[编程题]转置文件的内容
  • 热度指数:26345 时间限制: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
cols=$(sed "1q" nowcoder.txt | awk '{print NF}')
for ((i = 1; i <= cols; i++)); do
    awk -v k="$i" '{printf("%s ", $k)}' nowcoder.txt
    echo
done

发表于 2021-09-05 11:16:48 回复(0)
更多回答
a=`head -n1 "nowcoder.txt" |awk -F ' ' '{print NF}'`
i=1
while [  $i -le  $a ];
do
    line=`cat "nowcoder.txt"|awk '{print $'$i'}'`
    echo $line
    let i+=1
done   
发表于 2020-11-12 21:26:36 回复(2)
#!/bin/bash
awk '{printf  $1" "}' nowcoder.txt
awk '{printf $2" "}' nowcoder.txt
发表于 2021-03-14 20:27:01 回复(9)
awk '{
    for(i=1;i<=NF;i++){rows[i]=rows[i]" "$i}
} END{
    for(line in rows){print rows[line]}
}' $1

发表于 2021-01-12 19:27:23 回复(5)
#!/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++){
        if (NR == 1) {
            array[i] = $i
        } else {
            array[i] = array[i] $i
        }
    }
} END {
    for(j = 1; j <= NF; j++){
        print array[j]
    }
}' nowcoder.txt

发表于 2020-12-20 15:11:54 回复(2)
awk '{print $1}' nowcoder.txt | xargs
awk '{print $2}' nowcoder.txt | xargs
多行转多列:
$ cat nowcoder.txt 
job salary employees
c++ 13 70
java 14 80
php 12 30

$ <nowcoder.txt awk '{ 
    for (i=1; i<=NF; i++) arr[i]= (arr[i]? arr[i] FS $i: $i) } 
    END { for (i in arr) print arr[i] }'
job c++ java php
salary 13 14 12
employees 70 80 30

rs:
$ rs -Tzc' ' < nowcoder.txt 
job        c++  java  php
salary     13   14    12
employees  70   80    30


编辑于 2021-01-21 22:42:23 回复(1)
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)
cat nowcoder.txt | awk '{for(i=1;i<=NF;i++){if(NR==1){res[i]=$i;}else{res[i]=res[i]" "$i}}}END{for(i=1;i<=NF;i++)print res[i]}'
发表于 2021-04-20 20:22:22 回复(1)
awk '{print $1}' nowcoder.txt|tr "\n" " "&&echo ""&& awk '{print $2}' nowcoder.txt|tr "\n" " "&&echo ""
发表于 2021-03-02 22:11:45 回复(0)
awk '$1="1."NR","$1,$2="2."NR","$2' nowcoder.txt | tr " " "\n" | sort -n | awk -F "," '{print $2}' | tr "\n" " "  | awk -F " " '$5="\n"$5'
给每一个数前面加一个数据用于排序 再打平
发表于 2021-02-24 10:50:35 回复(2)
for ((i=1;i<=$(awk 'END{print NF}' nowcoder.txt);i++))
do
    cut -d " " -f $i nowcoder.txt |xargs
done

发表于 2023-02-07 17:59:17 回复(0)
cat nowcoder.txt | awk '{print $1}' | xargs && cat nowcoder.txt | awk '{print $2}' | xargs

发表于 2022-08-31 00:03:22 回复(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 '{printf $1" "}' nowcoder.txt
echo
awk '{printf $2" "}' nowcoder.txt
发表于 2021-06-23 21:25:41 回复(0)
columnNum=$(awk '{print NF;exit}' nowcoder.txt)
for i in $(seq 1 ${columnNum})
do
    cat nowcoder.txt | awk -v var=$i '{print $var}' | xargs
done
发表于 2025-01-05 02:23:21 回复(0)
#!/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 '{for(i=1;i<=NF;i++){a[NR,i]=$i}}NF>p { p = NF }END{for(i=1;i<=p;i++){for(j=1;j<=NR;j++){printf a[j,i]" "}print ""}}' nowcoder.txt

发表于 2024-11-15 15:21:40 回复(0)
#!/bin/bash

while IFS=" " read -r a b; do
    arr_a+=("$a")
    arr_b+=("$b")
done <nowcoder.txt

echo "${arr_a[@]}"
echo "${arr_b[@]}"

发表于 2024-07-02 15:17:57 回复(0)
cat nowcoder.txt |awk '
    {
        for(i=1;i<=NF;i++){
            if(NR>1){
                nums[i]=nums[i]" "$i
            }else{
                nums[i]=$i
            }
           
        }
    }
    END{
        for(i in nums){
            print nums[i]
        }
    }
'
发表于 2024-06-30 15:02:26 回复(0)
awk '{for(i=1;i<=NF;i++){array[NR,i]=$i}}END{for(i=1;i<=NF;i++){for(j=1;j<=NR;j++){printf array[j,i]" "} printf "\n" }}' nowcoder.txt | sed 's\ $\\g'
发表于 2024-05-31 16:27:36 回复(0)