替换 shell 中的确切数字
replace exact number in shell
我有以下矩阵:
0.380451 0.381955 0 0.237594
0.317293 0.362406 0 0.320301
0.261654 0.38797 0 0.350376
0 0 0 1
0 1 0 0
0 0 0 1
0 0.001504 0 0.998496
0.270677 0.35188 0.018045 0.359398
0.36391 0.305263 0 0.330827
0.359398 0.291729 0.037594 0.311278
0.359398 0.276692 0.061654 0.302256
我只想替换零而不是零后跟点到 0.001,如何使用 sed 或 gsub 来实现?
匹配替换中的空格。
echo 0 0.001504 0 0.998496 | sed 's/0[\t ]/Z /g'
这不是很优雅,也不是超级便携,但它适用于您的特定示例:
sed -e 's=^0 =X =g
s= 0$= X=g
s= 0 = X =g' data.txt
首先,它假定输入文件中的字段由一个或多个空格分隔。第一部分在行首找“0”,第二部分在行尾找“0”,第三部分找两边有空格的“0”
为此仅使用 sed 有什么特别的原因吗?我相信一个简单的 awk
脚本可以做得更好,也更健壮。
我有以下矩阵:
0.380451 0.381955 0 0.237594
0.317293 0.362406 0 0.320301
0.261654 0.38797 0 0.350376
0 0 0 1
0 1 0 0
0 0 0 1
0 0.001504 0 0.998496
0.270677 0.35188 0.018045 0.359398
0.36391 0.305263 0 0.330827
0.359398 0.291729 0.037594 0.311278
0.359398 0.276692 0.061654 0.302256
我只想替换零而不是零后跟点到 0.001,如何使用 sed 或 gsub 来实现?
匹配替换中的空格。
echo 0 0.001504 0 0.998496 | sed 's/0[\t ]/Z /g'
这不是很优雅,也不是超级便携,但它适用于您的特定示例:
sed -e 's=^0 =X =g
s= 0$= X=g
s= 0 = X =g' data.txt
首先,它假定输入文件中的字段由一个或多个空格分隔。第一部分在行首找“0”,第二部分在行尾找“0”,第三部分找两边有空格的“0”
为此仅使用 sed 有什么特别的原因吗?我相信一个简单的 awk
脚本可以做得更好,也更健壮。