shell 获取字符串前面的空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 获取字符串前面的空格相关的知识,希望对你有一定的参考价值。

比如说
a=“ aaa xxx ccc ”
我现在要获取a前面的字符串空格长度应该怎么样呢?
也就是说
第一个字符类型或者是数字类型前面的空格

sed -n '/^\s*/' "$a" 显然是不行的 在sed中到底是如何使用正则表达式的呢?

参考技术A #可以使用awk实现:
echo "$a" | awk 'str=length($0); sub(/^[ ]*/,"",$0); print str-length($0);'

如:a=“    aaa  xxx ccc   ”,执行结果为:4

希望可以帮助到你!

本回答被提问者采纳
参考技术B

这样算前面的空格长度:

b=$(echo "$a" | sed -r 's/( +)[^ ]+.*/\\1/')
echo $#b

参考技术C $bash 1.shstring=how are you?string=ok?$cat 1.sh#!/usr/bin/bashwhile read stringdo echo "string=$string"done < 111 $cat 111how are you?ok?脚本名1.sh, 要读取的文件名111。

shell笔记:获取本机IP地址

#!/bin/bash
#2.sh
#编写shell脚本获取本机的网络地址。
#比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0
#注意:Bcast与前面的Ip地址之间是两个空格,所以一定要把两个空格都删掉
#grep后面的搜索词加不加引号都可以,如果是一个比较长,有空格的,比如inet addr,就加引号,只有Mask可以不加
#之所以搜索inet addr是因为,只搜索inet的话,还有IPv6的地址
IP=`ifconfig eth0 | grep ‘inet addr‘ | sed ‘s/^.*addr://g‘ |sed ‘s/ Bcast:.*$//g‘` MASK=` ifconfig eth0 | grep Mask |sed ‘s/^.*Mask://g‘` echo "$IP/$MASK" exit

  




以上是关于shell 获取字符串前面的空格的主要内容,如果未能解决你的问题,请参考以下文章

shell学习- sort

linux shell 中 如何处理空格的路径?

Java程序shell启动脚本文件中路径带空格怎么办?

shell脚本中的数组常见使用方式

linux shell 问题,清除文件中的空格

linux shell 问题,清除文件中的空格,并每两个字符中插入\x