Chinaunix

标题: 获取字符串前面空格的长度 [打印本页]

作者: Piaomiao139    时间: 2014-08-20 16:06
标题: 获取字符串前面空格的长度
比如说
a=“    aaa  xxx ccc   ”
我现在要获取a前面的字符串长度应该怎么样呢?

sed -n '/^\s*/' "$a"            显然是不行的 在sed中到底是如何使用正则表达式的呢?
新手伸手。。。
作者: Piaomiao139    时间: 2014-08-20 16:13
空格的长度
。。。
作者: ly5066113    时间: 2014-08-20 16:26
回复 1# Piaomiao139
  1. echo "$a" | awk -F aaa '{print length($1)}'
复制代码

作者: zhaopingzi    时间: 2014-08-20 16:37

  1. awk 'BEGIN{ a="     aaa xxx ccc xx  ";print  index(a,"a")}'
  2. 6
复制代码

作者: yestreenstars    时间: 2014-08-20 16:48
  1. awk '{print length(gensub(/^([[:space:]]*).*/,"\\1",1))}'
复制代码

作者: Piaomiao139    时间: 2014-08-20 16:49
回复 3# ly5066113


     $ echo "$a" | nawk -F aaa '{print length($1)}'
17
$  echo "$a"
    zzz xxx cc
明显不对。。。啊 这个应该是所有的空格吧?
作者: Piaomiao139    时间: 2014-08-20 16:53
这个。。。不对啊
我的意思是获取
aaa前面空格的长度
如果写一个通用的方法怎么写呢?
不只是适用一个的
看来  没有看书。。。。
怎么sed不支持这种处理方式或者说awk在这上面处理有优势?
作者: Piaomiao139    时间: 2014-08-20 16:55
回复 4# zhaopingzi


    认真数数发现是5个空格而不是6个
我想写的是一个通用的方法不是只适用一个。。。
谢谢
作者: ly5066113    时间: 2014-08-20 17:05
回复 6# Piaomiao139
  1. echo "$a" | awk -F '[a-z]' '{print length($1)}'
复制代码

作者: zhaopingzi    时间: 2014-08-20 17:11
本帖最后由 zhaopingzi 于 2014-08-20 17:14 编辑

  1. str="   aa bb  cc  "
  2. expr index "$str" "a" - 1
  3. 3
复制代码

作者: zhaopingzi    时间: 2014-08-20 17:12
回复 8# Piaomiao139


   见10楼
作者: Piaomiao139    时间: 2014-08-20 17:27
回复 10# zhaopingzi


    好像不支持这个语法 bash
作者: Piaomiao139    时间: 2014-08-20 17:27
回复 9# ly5066113


    这个上面可以其它得试试。。。。
tq
作者: MeRcy_PM    时间: 2014-08-20 17:34
  1. grep -Po "^ *" | wc -m
复制代码
再减一吧。
作者: zhaopingzi    时间: 2014-08-20 17:34
回复 12# Piaomiao139


    -前后有空格,你改了吗
作者: lifayi2008    时间: 2014-08-20 18:07
  1. awk '{print match($0,/[^ ]/)-1}' c.txt
  2. awk '{print length($0)-length(gensub(/ +/,"",1))}' c.txt
复制代码

作者: Piaomiao139    时间: 2014-08-21 17:43
回复 15# zhaopingzi


   用不起  不知道为什么。
作者: reb00t    时间: 2014-08-22 11:52
本帖最后由 reb00t 于 2014-08-22 11:53 编辑
  1. <?php
  2. $a="    aaa  xxx ccc   ";
  3. echo strpos($a, "a");
  4. ?>
复制代码
4[Finished in 0.2s]
作者: rulebook    时间: 2014-08-25 17:15
  1. a="    aaa  xxx ccc   ";echo "${a%%[a-z]*}" | wc -L
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2