在数字两边添加括号

在数字两边添加括号

我有一个充满数字的文件:

1 6 8 9 10 11

我想将每个数字括在括号中,因此最终输出基本上为:

(1) (6) (8) (9) (10) (11)

等等。

答案1

尝试sed

sed -i.bak 's/[0-9]\+/(&)/g' file.txt

在此sed替换中,我们将[0-9]\+ie 连续数字替换为(&)匹配数字周围的 ie 括号。g意味着此替换将对所有匹配的模式进行,否则只会替换第一个匹配。

操作后,修改后的文件将为file.txt,原始文件将保留为file.txt.bak。最好备份原始文件,如果不想备份,只需使用:

sed -i 's/[0-9]\+/(&)/g' file.txt

答案2

使用 awk 仅捕获数字(不会打印空行):

awk '{for(i=1; i<=NF; i++) if($i ~ /[[:digit:]]/) $i="("$i")"} NF{print}' file

答案3

xargs printf '(%d) ' <infile

可以从任何一系列 20 左右数字以下的数字中获得像问题中的示例一样的输出,每个数字之间用一个或多个空格分隔。

相关内容