split(s,array)
for (i=1i<=NFi++) $i=$i-array[5+i]
print }' 第二个文件
结果
9761 98.895 10 1 98.896
简单介绍下Shell字符串截取的详细方法,如截取指定字数、按指定的字符串截取、按指定要求分割。
一、Linux shell 截取字符变量的前8位,有方法如下:
二、按指定的字符串截取1、第一种方法:${varible##*string} 从左向右截取最后一个string后的字符串${varible#*string}从左向右截取第一个string后的字符串${varible%%string*}从右向左截取最后一个string后的字符串${varible%string*}从右向左截取第一个string后的字符串“*”只是一个通配符可以不要
三、按照指定要求分割:比如获取后缀名
就像 Linux 中的一切都是文件一样,bash 中的一切都是字符串。
从技术上讲,Bash 中没有数据类型,本质上,Bash 变量只是字符串。
当您尝试在 bash 中进行算术运算时,这会产生问题,您尝试添加的数字会给您带来奇怪的结果。
要在 bash 中将字符串转换为整数,请将它们包装在 $((X)) 中,像这样:
如果字符串有一个可识别的数字,它将被视为一个数字,我上面显示的示例可以更正为:
让我们更详细地看一下字符串到数字的转换,以便您可以在 bash 中使用算术计算。
您可以检查分配的号码:
现在让我们尝试将两个数字相加并将值存储在第三个变量中c:
正如您在上面的输出中看到的,c 也被视为字符串。
要使加法成功,您需要通过算术展开“转换”它:
请注意,c它实际上仍然是一个字符串,直到您再次隐式使用相同的算术扩展来进行我稍后将讨论的另一个 *** 作。
以上等价于:
d让我们为另一个 *** 作使用第三个变量:
现在进行第二次 *** 作:
在上面的表达式中,首先计算 b 和 c 的乘积,最后计算加法和减法。
正如我之前提到的,您在 $((...)) 之间所做的任何事情都被认为是算术运算。
混合字符串和整数仍然比混合可乐和薄荷更安全。不过,它确实会产生一个奇怪的结果。
它仅在有数字(作为字符串)时才有效,如果是纯字符串,就不会神奇地转换成一些数字,相反,它会被忽略,如您在上面的示例中所见。
您也可以使用该expr工具进行评估,但请注意它不是“本机” Bash 程序,因为您需要coreutils安装(默认情况下在 Ubuntu 上)作为单独的包。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)