2017-09-13 86 views
0

我想添加一個包含兩個不同標籤的列。比方說,我有這樣的文字添加具有不同標籤的列

aa bb cc 
dd ee ff 
gg hh ii 
ll mm nn 
oo pp qq 

,我想在2前兩行的興田第一欄,並在剩餘行的第一列加1,所以最終我會得到的文本:

1 aa bb cc 
1 dd ee ff 
2 gg hh ii 
3 ll mm nn 
4 oo pp qq 

你知道該怎麼做嗎? 感謝

回答

0

我假設你要做到這一點使用的外殼,如果你的數據是在一個名爲input.txt文件,您可以使用cat -nnl

% tail -n+2 input.txt | cat -n 
    1 dd ee ff 
    2 gg hh ii 
    3 ll mm nn 
    4 oo pp qq 
% tail -n+2 input.txt | nl 
    1 dd ee ff 
    2 gg hh ii 
    3 ll mm nn 
    4 oo pp qq 

第一行可以手動添加回去。

如果您的輸入文件中有空行,這兩個命令的行爲將會有所不同。

0

假設您正在Linux shell中處理文本文件,您可以使用awk。您的問題描述說,你想兩個標籤12,這將是

cat input.txt | awk '{print (NR<=2 ? "1 ":"2 ") $0}' 

你的預期輸出說,你要標註1的前兩行,並開始從2與第三行開始算起,這將是

cat input.txt | awk '{print (NR<=2 ? "1 ":NR-1" ") $0}' 
+0

恕我直言,你不需要用awk來使用cat,因爲awk可以自己讀取Input_file。 – RavinderSingh13

0

請問您是否可以嘗試以下方法,並告訴我這是否有助於您。

解決方案1:通過使用其初始值爲1的變量命名計數,然後檢查是否行號爲1或2,然後簡單地追加1中的其他$ 1加1變量count的值,並追加其在$ 1'的價值。

awk -v count=1 '{$1=NR==1||NR==2?1 FS $1:++count FS $1} 1' Input_file 

解第二:檢查是否行數是1或2,那麼簡單地增加1到$ 1,否則檢查是否一個線是NOT NULL然後添加NR-1(這意味着減去1從它的線數)和增加到1美元的價值。

awk '{$1=NR==1||NR==2?1 FS $1:(NF?FNR-1 FS $1:"")} 1' Input_file 
相關問題