写一个bash脚本来转置文本文件nowcoder.txt中的文件内容。
文件中每行列数相同,并且每个字段由空格分隔
示例:
假设 nowcoder.txt 内容如下:
job salary
c++ 13
java 14
php 12
你的脚本应当输出(以词频升序排列):
job c++ java php
salary 13 14 12
                                        
                                                            
                                                                                            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 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 -Tzc' ' < nowcoder.txt job c++ java php salary 13 14 12 employees 70 80 30
awk '{for(i=1;i<=NF;i++)a[i]=a[i]" "$i}END{for(i in a)print a[i]}' 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'
 给每一个数前面加一个数据用于排序 再打平
                                                                                    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 #!/bin/bash
while IFS=" " read -r a b; do
    arr_a+=("$a")
    arr_b+=("$b")
done <nowcoder.txt
echo "${arr_a[@]}"
echo "${arr_b[@]}"