Bash awk 實(shí)現(xiàn)行列轉(zhuǎn)換

諸如行列轉(zhuǎn)換漱挎、行列式轉(zhuǎn)置的算法力细,放在python或C語(yǔ)言中,完全可用二維數(shù)組實(shí)現(xiàn)固额,如果用shell眠蚂,awk更方便

看了網(wǎng)友帖子,感覺有意思總結(jié)一下对雪,原文鏈接

文本文件行列轉(zhuǎn)置

[root@localhost AWK]# cat file
編號(hào)    地區(qū)    username        password        時(shí)間            服務(wù)提供商
1       貴陽(yáng)    root            123456          2019/3/14       華為
2       曼谷    root            123456          2019/3/14       ucloud
3       首爾    root            123456          2019/3/14       ucloud
4       高雄    root            123456          2019/3/14       ucloud
5       孟買    root            123456          2019/3/14       ucloud

轉(zhuǎn)換為如下格式:

編號(hào)     1       2       3       4       5
地區(qū)     貴陽(yáng)    曼谷    首爾    高雄    孟買
username         root    root    root    root    root
password         123456  123456  123456  123456  123456
時(shí)間     2019/3/14       2019/3/14       2019/3/14       2019/3/14       2019/3/14
服務(wù)提供商       華為    ucloud  ucloud  ucloud  ucloud

思路分析

  • NF 列數(shù)
  • NR 行編號(hào)

先編號(hào):
for(i=1;i<=NF;i++)a[NR, i]=$i

  • for 遍歷每一行
  • 每一行中河狐,在1 - NF范圍中獲得每一列元素的值,存入數(shù)組
  • i對(duì)應(yīng)列數(shù)瑟捣,因而$i就是元素值

所以取值結(jié)果應(yīng)該是:

a[1,1]=$i=$1=1 a[1,2]=$i=$2=2 a[1,3]=$i=$3=3 
a[2,1]=$i=$1=1 a[2,2]=$i=$2=2 a[2.3]=$i=$3=3 
a[3,1]=$i=$1=1 a[3,2]=$i=$2=2 a[3,3]=$i=$3=3  
a[4,1]=$i=$1=1 a[4,2]=$i=$2=2 a[4.3]=$i=$3=3 
a[5,1]=$i=$1=1 a[5,2]=$i=$2=2 a[5,3]=$i=$3=3 
a[6,1]=$i=$1=1 a[6,2]=$i=$2=2 a[6,3]=$i=$3=3 
a[7,1]=$i=$1=1 a[7,2]=$i=$2=2 a[7,3]=$i=$3=3 

接下來(lái)如果想進(jìn)行轉(zhuǎn)置馋艺,結(jié)果應(yīng)該是如下形式:

a[1,1] a[2,1] a[3,1]  a[4,1] a[5,1] a[6,1] a[7,1]
a[1,2] a[2,2] a[3,2]  a[4,2] a[5,2] a[6,2] a[7,2]
a[1,3] a[2,3] a[3,3]  a[4,3] a[5,3] a[6,3] a[7,3]

行列轉(zhuǎn)換:
對(duì)于行列變化,可以用兩個(gè)嵌套for循環(huán)來(lái)實(shí)現(xiàn):
for(j=1;j<=NF;j++) 輸出j=1, 2, 3
for(k=1;k<=NR;k++) 輸出k=1, 2, 3, 4, 5, 6, 7

當(dāng)j=1迈套,k=1, 2, 3, 4, 5, 6, 7
a[k, j] 等于

a[1,1] a[2,1] a[3,1]  a[4,1] a[5,1] a[6,1] a[7,1]

當(dāng)j=2捐祠,k=1, 2, 3, 4, 5, 6, 7
a[k, j] 等于

a[1,2] a[2,2] a[3,2]  a[4,2] a[5,2] a[6,2] a[7,2]

當(dāng)j=3k=1, 2, 3, 4, 5, 6, 7
a[k, j] 等于

a[1,3] a[2,3] a[3,3]  a[4,3] a[5,3] a[6,3] a[7,3]

結(jié)果
編寫awk桑李,結(jié)果為:

[root@localhost AWK]# awk 'BEGIN{FS=" "} {for(i=1;i<=NF;i++)a[NR,i]=$i} END{for(j=1;j<=NF;j++){for(k=1;k<=NR;k++){printf a[k,j]"  "}print xxoo}}'  file
11  21  32
12  22  32
13  23  33
14  24  34
15  25  35
16  26  36
17  27  37
# 或者用 \n
[root@localhost AWK]# awk 'BEGIN{FS=" "} {for(i=1;i<=NF;i++)a[NR,i]=$i} END{for(j=1;j<=NF;j++){for(k=1;k<=NR;k++){printf a[k,j]"  "}printf "\n"}}'  file
11  21  32
12  22  32
13  23  33
14  24  34
15  25  35
16  26  36
17  27  37

上邊外層循環(huán)的print xxoo我直接從原文里copy的踱蛀,我測(cè)試發(fā)現(xiàn)是起到了換行的作用,哪位小哥知道怎么回事贵白?麻煩評(píng)論區(qū)說一下率拒,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末禁荒,一起剝皮案震驚了整個(gè)濱河市猬膨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呛伴,老刑警劉巖勃痴,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異热康,居然都是意外死亡沛申,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門姐军,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铁材,“玉大人,你說我怎么就攤上這事奕锌∩辣幔” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵歇攻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我梆造,道長(zhǎng)缴守,這世上最難降的妖魔是什么葬毫? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮屡穗,結(jié)果婚禮上贴捡,老公的妹妹穿的比我還像新娘。我一直安慰自己村砂,他們只是感情好烂斋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著础废,像睡著了一般汛骂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上评腺,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天帘瞭,我揣著相機(jī)與錄音,去河邊找鬼蒿讥。 笑死蝶念,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芋绸。 我是一名探鬼主播媒殉,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摔敛!你這毒婦竟也來(lái)了廷蓉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舷夺,失蹤者是張志新(化名)和其女友劉穎苦酱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體给猾,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疫萤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敢伸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扯饶。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖池颈,靈堂內(nèi)的尸體忽然破棺而出尾序,到底是詐尸還是另有隱情,我是刑警寧澤躯砰,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布每币,位于F島的核電站,受9級(jí)特大地震影響琢歇,放射性物質(zhì)發(fā)生泄漏兰怠。R本人自食惡果不足惜梦鉴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揭保。 院中可真熱鬧肥橙,春花似錦、人聲如沸秸侣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)味榛。三九已至椭坚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間励负,已是汗流浹背藕溅。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留继榆,地道東北人巾表。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像略吨,于是被迫代替她去往敵國(guó)和親集币。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 懷念一切舊事物翠忠, 包括所有的習(xí)慣鞠苟。 懷念清晨的陽(yáng)光, 懷念茶葉的芳香秽之, 懷念夜幕的操場(chǎng)当娱, 和你樂此不倦的晚安。 但...
    禾必閱讀 247評(píng)論 2 3