我想添加一個包含兩個不同標籤的列。比方說,我有這樣的文字添加具有不同標籤的列
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
你知道該怎麼做嗎? 感謝
我想添加一個包含兩個不同標籤的列。比方說,我有這樣的文字添加具有不同標籤的列
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
你知道該怎麼做嗎? 感謝
我假設你要做到這一點使用的外殼,如果你的數據是在一個名爲input.txt
文件,您可以使用cat -n
或nl
。
% 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
第一行可以手動添加回去。
如果您的輸入文件中有空行,這兩個命令的行爲將會有所不同。
假設您正在Linux shell中處理文本文件,您可以使用awk
。您的問題描述說,你想兩個標籤1
和2
,這將是
cat input.txt | awk '{print (NR<=2 ? "1 ":"2 ") $0}'
你的預期輸出說,你要標註1
的前兩行,並開始從2
與第三行開始算起,這將是
cat input.txt | awk '{print (NR<=2 ? "1 ":NR-1" ") $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
恕我直言,你不需要用awk來使用cat,因爲awk可以自己讀取Input_file。 – RavinderSingh13