2017-04-16 23 views
0

這有點奇怪,但我試圖計算列中字符「N」的實例,用當前計數替換每個出現的字符,並保持其他字符不變。例如:將bash列轉換爲計數,同時忽略字符

N 
N 
- 
- 
N 
- 
- 
N 
N 
N 

應該改爲:

1 
2 
- 
- 
3 
- 
- 
4 
5 
6 

似乎無法描述這口井發現現有的答案,感謝幫助。

+0

用bash:'declare -i a = 0;而IFS =讀取-r行; do [[$ line ==「N」]] && a = a + 1 && line = $ a;回聲「$線」;完成<文件' – Cyrus

回答

4
awk '{ if ($1=="N") {a++; print a} else {print} }' file 

輸出:

 
1 
2 
- 
- 
3 
- 
- 
4 
5 
6 
+1

我打了高爾夫,但不覺得它需要單獨的答案:'awk'{print $ 1 ==「N」? ++ a:$ 1}'' –

+0

謝謝!奇蹟般有效! –

+0

請看看:[我應該怎麼做當有人回答我的問題?](http://stackoverflow.com/help/someone-answers) – Cyrus

0

嘗試:(清楚地基於你所示樣品INPUT_FILE)

awk '/^N$/{sub(/N/,++i);}1' Input_file 

所以檢查從字符n開始的行,然後用代字符n名爲i的變量,其值在每次發生替換時都在增加。然後放1將打印當前行,然後提及Input_file。

1
$ awk '{print (/N/?++c:$0)}' file 
1 
2 
- 
- 
3 
- 
- 
4 
5 
6 
相關問題