iT邦幫忙

0

Linux如何使用awk 分割row(record)?

A 2019-05-28 11:27:19828 瀏覽

我的資料長這樣的格式

data
A A
B B
data
A A
B B
data
A A
B B
C C

需要得到結果是

A A
B B
C C

要怎麼用data這個關鍵字把資料切開?
拿到最後的結果
google awk的方法可以找到滿多"行"的切割,但"列"的切割就找不太到我需要的方法
謝謝~

1
raytracy
iT邦大神 1 級 ‧ 2019-05-28 11:42:13

這樣會不會比較直覺一點:
https://ithelp.ithome.com.tw/upload/images/20190528/20026603Bq237Xfz1t.png

非要 awk 不可的話也可以:
https://ithelp.ithome.com.tw/upload/images/20190528/20026603oUD6Re8NVa.png

想要 Uniq 也可以:
https://ithelp.ithome.com.tw/upload/images/20190528/20026603jBAoBK2w2P.png

看更多先前的回應...收起先前的回應...
A iT邦新手 5 級 ‧ 2019-05-28 11:50:38 檢舉

但我需要把他切割
只留
A A
B B
C C
感謝你的回覆~

raytracy iT邦大神 1 級 ‧ 2019-05-28 12:51:43 檢舉

上面第三張圖是不是你要的答案?

A iT邦新手 5 級 ‧ 2019-05-28 13:03:31 檢舉

不好意思
我沒把問題寫清楚
應該把資料改成:
data
A B
C D
data
E F
G H
data
I J
K L
M N

結果:
I J
K L
M N

是最後切割data後的資料才是我要的
感謝回復~

raytracy iT邦大神 1 級 ‧ 2019-05-28 13:40:55 檢舉

樓下 weiclin 大師已經解答...

不明
【**此則訊息已被站方移除**】
1
weiclin
iT邦高手 4 級 ‧ 2019-05-28 13:34:56

這樣:

tac data.txt | sed '/^data/Q' | tac
A iT邦新手 5 級 ‧ 2019-05-28 14:42:28 檢舉

我正在用的linux沒有tac..
所以我找了替代tac的方法
結果sed不支援 Q
但我在UBUNTU可以成功 感謝回復~~

cat data |  sed '1!G;h;$!d' | sed '/^data/Q'
sed: unsupported command Q

後來用awk的方法是

cat data |  awk -v RS=data 'END{print}'

我要發表回答

立即登入回答