写一个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
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[@]}"