我有一个如下所示的文件:
1 abcde
2 00
3 12
4 12
5 ghijkl
6 jsaslm
7 uawrns
8 abcde
9 \(%"!&/
10 $!"$&/(
90 !§%/(//
我想替换第一“列”中所有大于 3 的数字(即包含 1、2 等的数字)。它们应该被以 3 为模的数字的计算结果替换 - 除了那些能被 3 整除的数字(那些应该只是 3)。所以结果应该是这样的:
1 abcde
2 00
3 12
1 12
2 ghijkl
3 jsaslm
1 uawrns
2 abcde
3 \(%"!&/
1 $!"$&/(
3 !§%/(//
格式并不重要,但上面显示的方式是首选。
我正在使用 Linux。
答案1
使用 awk 解决您更新的问题
awk '$1{$1=$1%3?$1%3:3}1' file
1 abcde
2 00
3 12
1 12
2 ghijkl
3 jsaslm
1 uawrns
2 abcde
3 \(%"!&/
1 $!"$&/(
3 !§%/(//
答案2
和awk
:
$ awk -v n=3 '{$1 = ($1 > n) ? ($1 % n) ? $1 % n : n : $1};1' <file
1 abcde
2 00
3 12
1 12
2 ghijkl
3 jsaslm
1 uawrns
2 abcde
3 \(%"!&/
1 $!"$&/(
3 !§%/(//