Re: 請問 grep 或其他 script 做得到嗎?
※ 引述《heyk1 (大熱天)》之銘言:
: 有一筆學生與成績資料如下, 每個字串和數字都是用空格隔開,
: xq gg hd ws ki
: Jahn amber benson kilo May
: 35 26 08 21 11
: 99 76 73 86 32
: 90 51 89 55 80
: 想要用搜尋找到 benson 還有 May 的特定學生關鍵字,
: 然後把 benson 和 Mar 相對應底下第2, 3 行(固定特定行數)的數字取出來,
: 變成
: benson May
: 08 11
: 73 32
: 存成新檔,
: 請問這樣要有辦法寫嗎?
: 謝謝.
:
: --
: → heyk1: 轉置看起來很棒, 能否請在詳細束束一下作法? 05/08 19:27
: → heyk1: 位置3 和 5 的數字, 有沒有辦法靠程式自動判斷, 搜尋得到? 05/08 19:28
: → heyk1: 因為學生名字關鍵字會改變. 謝謝. 05/08 19:29
行列轉置 google 一下應該有一些可以參考.
不確定學生是一次會搜尋好幾個? 還是一次只會找一個?
不用行列轉置:
Rickie MBPr:0 rickie$ cat go.awk
(NR==1){
for ( i =1 ; i <= NF ; i++ ){
if ( $i == name ){
target=i;
break;
}
}
print $target;
}
(NR==2)||(NR==3){print $target;}
Rickie MBPr:0 rickie$ awk -f go.awk name="benson" data.txt
benson
08
73
兩個, 不轉置.
Rickie MBPr:0 rickie$ cat go.awk
(NR==1){
for ( i =1 ; i <= NF ; i++ ){
if ( $i == name1 ){
target1=i;
}
if ( $i == name2 ){
target2=i;
}
}
printf("%s\t%s\n", $target1, $target2);
}
(NR==2)||(NR==3){ printf("%s\t%s\n", $target1, $target2);}
Rickie MBPr:0 rickie$ awk -f go.awk name1="benson" name2="May" data.txt
benson May
08 11
73 32
看來兩個以上還是先轉置方便一些
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.222.17.107
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1462728967.A.405.html
※ 編輯: rickieyang (203.222.17.107), 05/09/2016 01:37:07
→
05/09 01:39, , 1F
05/09 01:39, 1F
→
05/09 06:29, , 2F
05/09 06:29, 2F
→
05/14 00:48, , 3F
05/14 00:48, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):