我有一个充满数字的文件:
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 左右数字以下的数字中获得像问题中的示例一样的输出,每个数字之间用一个或多个空格分隔。