我需要将90s值中的100s值分开... sed
可能不是完成此操作的最佳方法,但无论如何,我试图通过在两个数字之间插入一个空格来将90s与100分开。
代码:
sed 's/1[0-9][0-9]/ 1[0-9][0-9]/g' file
数据文件:
99100 93 96 95 94 93 96 98100
当前结果:
99 1[0-9][0-9] 93 96 95 94 93 96 98 1[0-9][0-9]
预期结果:
99 100 93 96 95 94 93 96 98 100
答案 0 :(得分:1)
您可以用&
替换整场比赛:
s='99100 93 96 95 94 93 96 98100'
echo $s | sed 's/1[0-9][0-9]/ &/g'
请参阅online demo,结果:99 100 93 96 95 94 93 96 98 100
。
请参阅sed
reference:
此外,替换可以包含未转义的
&
字符,这些字符引用模式空间的整个匹配部分。
答案 1 :(得分:1)
gawk 解决方案:
awk -v FPAT='9[0-9]|1[0-9][0-9]' '{ r=$1; for(i=2;i<=NF;i++) r=r FS $i; print r }' file
输出:
99 100 93 96 95 94 93 96 98 100
-v FPAT='9[0-9]|1[0-9][0-9]'
- 模式定义字段值(90s或100s)
r=$1
- 将第一个字段捕获为初始字段
for(i=2;i<=NF;i++)
- 遍历其余字段