假設 file.txt 檔案內容如下:
name age
alice 21
ryan 30
應當輸出:
name alice ryan
age 21 30
awk '
else}}
end}' file.txt
因為是對檔案內容轉置,因此我們採用awk處理文字語言
for(i=1; i<=nf; ++i)
else
}
乙個for迴圈。nf是檔案的列數,file.txt一共兩列,
if判斷,這裡的word[i]無需定義即可直接用,因為一開始肯定是空,可以看下面語句,方便理解
awk '}' file.txt
輸出結果
1 name
2 age
1 alice
2 21
1 ryan
2 30
由此可見,i指的是列數,$i指的是對應的值,其中awk是逐行去判斷的,因此得出上述的結果,這麼看就比較明顯了
word[i] 其實只有word[1] 和 word[2]
第一次判斷的時候 word[1] 必為空,因此 word[1]=$i 將值賦值給word[1]
之後再一次遇到word[1] 的時候, word[1]就不是空了 而是第一次賦值的 name ,也就是進入了if判斷中的另乙個分支,word[i] = word[i]" "$i 也就是說 word[i] = name alice
以此類推。其實就是乙個for迴圈和if判斷。
是指在執行完上述的的結果後,在進行end中的操作
end
}'
這就非常好理解了,就是迴圈列數,然後輸出之前處理後的word[1] 和 word[2] shell指令碼檔案引數
本文編輯自 當我們我們向 指令碼檔案傳遞引數 可以通過 1,2 等特殊變數。很方便,但是有些限制,就是不能超過9個引數。通過使用 shift getopts 我們能更方便地提取引數。一 shift 通過使用 shift 我們將 shell指令碼檔案 的引數起點從左向右移。在shift命令中可以給乙個...
Shell指令碼檔案練習
使用if條件語句來判斷 media cdrom檔案是否存在,若存在就結束條件判斷和整個shell指令碼,反之則去建立這個目錄 vim mkcdrom.sh bin bash ping c 3 i 0.2 w 3 1 dev null if eq 0 then echo host 1 is on li...
shell指令碼讀寫文字檔案
通過讀寫臨時檔案來完成核心與介面的互動是目前接觸的比較常用手段。而寫操作的格式如何呢。mdate date r d m y logfile tmp hdstatuslog.log echo disk is good mdate logfile 寫到檔案的格式就會變成這樣 dev sdc is goo...