nat*_*ath 5 sed awk text-processing
如何在以数字开头的每列的开头添加一个字符:
添加 ac
的示例:
4 r4 8 8 4
所以我得到这个输出:
c4 r4 c8 c8 c4
它应该适用于可变数量的列。
Mar*_*uet 11
您可以使用sed一次修改每一列:
sed -E 's/(^| )([[:digit:]])/\1c\2/g' input
Run Code Online (Sandbox Code Playgroud)
(^| )
如果您的字段分隔符不是空格,请将正则表达式这部分中的空格替换为您的字段分隔符。
-E
指定使用扩展正则表达式 (ERE) 而不是基本正则表达式 (BRE)s
:s/regexp/replacement/
(^| )
匹配捕获组中行的开头或空格([[:digit:]])
匹配捕获组中的数字\1c\2
第一个捕获组的内容 ( \1
)、字符c
、第二个捕获组的内容 ( \2
)g
全球一旦结果令您满意并且您的sed
实现支持它,您可以添加-i
(-i ''
在 FreeBSD 或诸如 macos 等衍生版本上)来就地修改文件。(-i.bak
如果您想备份原始文件)
我会使用awk
这样的 -oneliner:
echo '4 r4 8 8 4' | awk '{ for (i=1; i<=NF; i++) if ($i ~ /^[0-9]/) $i = "c" $i }1'
希望有帮助:)