Re: 請問 grep 或其他 script 做得到嗎? - Linux

Valerie avatar
By Valerie
at 2016-05-09T01:36

Table of Contents

※ 引述《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

看來兩個以上還是先轉置方便一些

--
Tags: Linux

All Comments

Noah avatar
By Noah
at 2016-05-11T14:50
好像沒考慮到找不到名字的狀況, 找不到會印出整行...
Elvira avatar
By Elvira
at 2016-05-15T23:14
兩個一樣名字的狀況也沒有處理
Erin avatar
By Erin
at 2016-05-19T12:26
學生一次會找兩三個 把它們各科的成績節取出來另存檔

log中想把同一來源的資料分開

Gilbert avatar
By Gilbert
at 2016-05-08T19:08
我的iptables有些設定LOG,會到/var/log/message中,另外也因為我常會幫人檢查 硬碟,所以也會看到警告 kernel: ata6.00: irq_stat 0x08000000, interface fatal error kernel: ata6: SError: { Unrec ...

請問 grep 或其他 script 做得到嗎?

Hamiltion avatar
By Hamiltion
at 2016-05-08T17:53
有一筆學生與成績資料如下, 每個字串和數字都是用空格隔開, xq gg hd ws ki Jahn amber benson kilo May 35 26 08 21 11 99 76 73 ...

在 Ubuntu 製作 FreeDOS 開機 USB 隨身碟

Barb Cronin avatar
By Barb Cronin
at 2016-05-08T17:48
原文在 https://goo.gl/HdkCHw 首先是安裝 makebootfat 這個套件。 $ sudo apt install makebootfat 然後就可以參考 /usr/share/doc/makebootfat/README.Debian 這份文件來製作 FreeDOS 開機的 US ...

Dragonbox Pyra很狂的一台Linux硬體

Ula avatar
By Ula
at 2016-05-08T14:44
這是這年頭我發現跟Neo900計畫一樣逆天的GNU/Linux掌上型機器 https://pyra-handheld.com/boards/pages/pyra/ 而且他比Neo900更狂,它給掌上型電腦加上鍵盤,跟筆電一樣甚至更多的擴充端子孔還有 爆多的記憶卡槽,然後升級跟PC一樣,他電路版有三片,其中CP ...

在 32-bit UEFI BIOS 上面安裝 Ubuntu

Todd Johnson avatar
By Todd Johnson
at 2016-05-07T13:59
原文 https://goo.gl/bvhS8u 最近剛好拿到一台硬體上面的 BIOS 只有支援 32-bit UEFI,但是 Ubuntu 16.04 以前的 版本包含 Ubuntu 16.04 本身的標準安裝媒體都沒有支援。 不過還好找到 http://askubuntu.com/questions/ ...