簡體   English   中英

有沒有一種簡單的方法可以使用小腳本自動讀取文本文件並使用 bash 腳本和 awk 或其他 unix 命令進行繪圖?

[英]Is there an easy way to use a small script to automate reading of a text file and plotting using bash script with awk or other unix commands?

我不熟悉使用 awk 和處理文本文件。 我有 model output 文件,包含 >600,000 行。 我想在 bash 腳本中使用該腳本自動繪制該文件中的 x,y 點。 我用“t”表示時間,用“T”表示溫度,分別是x和y。 每行或每一行都有不同數量的 tT 點

每行由以下以逗號分隔的內容組成:

-loglikelihood, -posterior, #Npairs-1, t1, T1, t2, T2...

有沒有辦法使用腳本開始讀取“CHAIN”處的文件並讀取直到文件中達到“CHAIN END”? 每行中的每個 t,T 對都需要單獨繪制為 x,y 對,因此所有 t1、t2、t3、t4、t5 等都是 X 值和 T1、T2、T3、T4、T5、等等,都是 Y 值。

例如,如果一行或單行如下所示:-400, -430, 3, 500, 50, 350, 100, 200, 20, 0, 5

---- 那么500、350、100、200、0都是X(時間)點,rest是Y(溫度)點(即50、100、20、5)。 因此 500、350 是第一個 x,y 對,依此類推...

獎勵:我想為每行和相關的點集保留 -400 的對數似然值,然后將整個 600,000 tT“路徑”組從 0-1 標准化,以便使用色帶進行繪圖。

實際數據文件 *** https://drive.google.com/file/d/1DLabBKWbhaX-w4Kp5jxdiuL5afDFZmuX/view?usp=sharing** *

更新:我最初認為轉置到列會起作用,但這可能很困難且效率低下,因為不僅行會被轉置到列,而且時間-溫度點對需要在每讀取一行時分成兩列in 和所有並排放置以正確讀取

部分答案,也許它會為最終解決方案提供一些提示......

您可以通過簡單的更改來創建柱狀格式

$ awk 'NR>=45&& NR<=600044 {for(i=5;i<=19;i+=2) print $i,$(i+1)}' input.txt > output.txt

這將降低似然值,因為它沒有出現在 output 中。 下一個挑戰是將一對列拆分為多列格式。 如果我理解正確的話,最終的 output 中將有 600,000 x 2 = 1.2M 列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM