如何在從 1 到 2059 運行的 txt 檔案的開頭插入一列,這與我使用 awk 的檔案中的行數相對應。我知道命令將是這樣的:
awk '{$1=" "}1' 檔案
不確定在語音標記 1-2059 之間放什么?
我還想在標題行中包含一個標題,所以 1 應該只在技術上進入第二行。
**ID** Heading1
RQ1293939 -7.0494
RG293I32SJ -903.6868
RQ19238983 -0899977
rq747585950 988349303
FID **ID** Heading1
1 RQ1293939 -7.0494
2 RG293I32SJ -903.6868
3 RQ19238983 -0899977
4 rq747585950 988349303
所以我需要在第一列中插入 1 - 2059 的 FID
uj5u.com熱心網友回復:
您顯示的內容不起作用,它只是用$1空格替換第一個欄位 ( ) 并列印結果。如果您沒有空行,請嘗試:
awk 'NR==1 {print "FID\t" $0; next} {print NR-1 "\t" $0}' File
說明:
NR是對awk記錄(在我們的例子中是行)進行計數的變數,從 1 開始。所以NR==1只有在awk處理第一行時才成立的條件。在這種情況下,操作塊說要列印FID、制表符 (\t)、原始行 ($0),然后移動到下一行。- 僅當第一個動作塊尚未執行時(由于最后的
next陳述句),才會執行第二個動作塊。它列印NR-1,即行號減一,一個制表符和原始行。
如果您有空行并且想跳過它們,我們將需要一個計數器變數來跟蹤當前的非空行號:
awk 'NR==1 {print "FID\t" $0; next} NF==0 {print; next} {print cnt "\t" $0}' File
說明:
NF是對awk記錄中的欄位進行計數的變數(在我們的例子中是空格分隔的單詞)。所以NF==0是保存只在空行(或只包含空格線)的條件。在這種情況下,操作塊說列印空行并移動到下一行。- 僅當其他兩個操作塊均未執行時(由于它們的最終
next陳述句),才會執行最后一個操作塊。它增加cnt變數,列印它,列印一個制表符,并列印原始行。 - 未初始化的
awk變數(如cnt我們的示例中)在第一次用作數字時取值為 0。在命令使用它的值之前cnt增加變數。因此,該塊第一次執行時在列印之前取值為 1。請注意,列印后會增加。cntprintcntcnt
uj5u.com熱心網友回復:
假設您的標題行和其余資料之間沒有真正的空白行:
awk '{print (NR>1 ? NR-1 : "FID"), $0}' file
使用awk -v OFS='\t' '...' file,如果你想輸出為制表符分隔或管道它column -t,如果你想在視覺表格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/315041.html
