这有点奇怪,但我试图计算列中字符“N”的实例,用当前计数替换每个出现的字符,并保持其他字符不变。例如:将bash列转换为计数,同时忽略字符
N
N
-
-
N
-
-
N
N
N
应该改为:
1
2
-
-
3
-
-
4
5
6
似乎无法描述这口井发现现有的答案,感谢帮助。
这有点奇怪,但我试图计算列中字符“N”的实例,用当前计数替换每个出现的字符,并保持其他字符不变。例如:将bash列转换为计数,同时忽略字符
N
N
-
-
N
-
-
N
N
N
应该改为:
1
2
-
-
3
-
-
4
5
6
似乎无法描述这口井发现现有的答案,感谢帮助。
awk '{ if ($1=="N") {a++; print a} else {print} }' file
输出:
1 2 - - 3 - - 4 5 6
我打了高尔夫,但不觉得它需要单独的答案:'awk'{print $ 1 ==“N”? ++ a:$ 1}'' –
谢谢!奇迹般有效! –
请看看:[我应该怎么做当有人回答我的问题?](http://stackoverflow.com/help/someone-answers) – Cyrus
尝试:(清楚地基于你所示样品INPUT_FILE)
awk '/^N$/{sub(/N/,++i);}1' Input_file
所以检查从字符n开始的行,然后用代字符n名为i的变量,其值在每次发生替换时都在增加。然后放1将打印当前行,然后提及Input_file。
$ awk '{print (/N/?++c:$0)}' file
1
2
-
-
3
-
-
4
5
6
用bash:'declare -i a = 0;而IFS =读取-r行; do [[$ line ==“N”]] && a = a + 1 && line = $ a;回声“$线”;完成<文件' – Cyrus