首页 > 试题广场 >

转置文件的内容

[编程题]转置文件的内容
  • 热度指数:22781 时间限制: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
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)
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 回复(4)
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)
#!/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 '{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)
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)
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)
cat nowcoder.txt | awk '{print $1}' > file1
cat nowcoder.txt | awk '{print $2}' > file2
paste -s file1 file2
谁能告诉我这个为什么不能在上面运行,我在自己的虚拟机上都可以
发表于 2023-11-01 20:11:40 回复(0)
XBG头像 XBG
awk '
{
    for(i=1;i<=NF;i++){
        array[NR,i] = $i
    }
}
END{
    for(i=1;i<=NF;i++){
        for(j=1;j<=NR;j++){
            if(j==NR){
                printf("%s\n",array[j,i])
            }else{
                printf("%s ",array[j,i])
            }
        }
    }
}' ./nowcoder.txt
虽然awk只是在逻辑上支持二维数组,但是用起来还是没啥区别
发表于 2023-10-25 21:54:03 回复(0)
#!/bin/bash
num=$(awk '{print NF}' nowcoder.txt|head -1)
for ((i=1;i<$num+1;i++))
do
    awk -v a=$i '{printf $a""}' nowcoder.txt
done
发表于 2023-10-21 20:37:19 回复(0)