BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 



判断变量内容前置空格的长度?
首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
iamkey9
精灵王
三楼楼长




CU编号: 457420
注册:2006-8-23
最后登录: 2009-07-01
帖子:334
精华:0

可用积分:392 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2007-9-14 23:48 

我提问方式有问题, 更改为

shell 变量 line 是字符串
如"   \t \t   this is sample"  ,   \t表示<TAB>

如何获得从开始到第一个ascii字符中间这段空白包含了多少个空格和\t?



原来内容:
文本文件
this is line1
         this is line2
                   this is line3

用什么办法判断单行前的空格的数目.如果这段空间内有\t字符,如何判断\t数目?
   
谢谢


[ 本帖最后由 iamkey9 于 2007-9-15 14:55 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]
寂寞烈火   帅哥
老法王


CU奥运火炬传递手2008
荣誉会员  
CU编号: 187152
注册:2004-10-1
最后登录: 2009-07-04
帖子:24676
精华:5

可用积分:14614 (大富大贵)
信誉积分:110
专家积分:171 (本版:102)
空间积分:1425
推广积分:0

来自:北京海淀
状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2007-9-15 00:09 

try
awk '{s=match($0,/[a-z]+/);if(s>1)print s-1}' ur-file



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

孰能浊以静之徐清?
孰能安以动之徐生?
iamkey9
精灵王
三楼楼长




CU编号: 457420
注册:2006-8-23
最后登录: 2009-07-01
帖子:334
精华:0

可用积分:392 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2007-9-15 09:48 



QUOTE:
原帖由 寂寞烈火 于 2007-9-15 00:09 发表
try
awk '{s=match($0,/[a-z]+/);if(s>1)print s-1}' ur-file

$cat test2
this is line1
         this is line2
                   this is line3

$cat test2 | awk '{s=match($0,/[a-zA-Z0-9]+/);if(s>0) print s-1}'
0
9
19
问题是,如果单行空格前有\t之类的符号,如
$cat test2
this is line1
         this is line2
                                   this is line3  <-- 这一行多了两个\t
$cat test2 | awk '{s=match($0,/[a-zA-Z0-9]+/);if(s>0) print s-1}'
0
9
21
有没有办法判断其数量,这样我就可以x4来计算实际占位长度了.



您对本贴的看法:鲜花[0] 臭蛋[0]
寂寞烈火   帅哥
老法王


CU奥运火炬传递手2008
荣誉会员  
CU编号: 187152
注册:2004-10-1
最后登录: 2009-07-04
帖子:24676
精华:5

可用积分:14614 (大富大贵)
信誉积分:110
专家积分:171 (本版:102)
空间积分:1425
推广积分:0

来自:北京海淀
状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2007-9-15 10:18 

cat -A urfile
数一下tab的个数



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

孰能浊以静之徐清?
孰能安以动之徐生?
iamkey9
精灵王
三楼楼长




CU编号: 457420
注册:2006-8-23
最后登录: 2009-07-01
帖子:334
精华:0

可用积分:392 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2007-9-15 10:47 



QUOTE:
原帖由 寂寞烈火 于 2007-9-15 10:18 发表
cat -A urfile
数一下tab的个数

1.老大,可能我的提问方式有问题,

我做了循环一次读入一行到变量,
while read line;
do
...
done < file

想判断一下这个的line 内容 从 "^" 到 "第一个可打印字符"  有多少个 空格 和 \t

2.变量能不能cat? 我试了一下,我这边不行,只能 echo。



您对本贴的看法:鲜花[0] 臭蛋[0]
網中人   帅哥
荣誉版主-法师



荣誉版主  
CU编号: 107641
注册:2003-10-28
最后登录: 2009-06-19
帖子:7973
精华:13

可用积分:7787 (富足长乐)
信誉积分:100
专家积分:54 (本版:0)
空间积分:0
推广积分:0

来自:Taiwan
状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2007-9-15 19:39 

2.
echo "$var" | cat -A



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

君子博學而日參省乎己,則知明而行無過矣。

:() { :|:& }; :      # <--- 這個別亂跑!好奇會死人的!
echo '十人|日一|十十o' | sed 's/.../&\n/g'   # <--- 跟你講就不聽,再跑這個好了...

dearvoid
精灵王




CU编号: 53218
注册:2003-4-21
最后登录: 2009-02-22
帖子:311
精华:0

可用积分:361 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


7楼 发表于 2007-9-15 21:10 

不借助 external 的 command,直接数一下也不麻烦啊:

QUOTE:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[9960 0]
; cat foo.sh
#!/bin/bash

str=$' \t \thello, world'
nBlank=0
for ((i = 0; i < ${#str}; ++i)); do
    if [[ "${str:i:1}" == [[:blank:]] ]]; then
        ((++nBlank))
    else
        break
    fi
done
echo $nBlank
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[9960 0]
; ./foo.sh
4
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[9960 0]
; bye




您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

◆ 欢迎访问 Linux 伊甸园 论坛
iamkey9
精灵王
三楼楼长




CU编号: 457420
注册:2006-8-23
最后登录: 2009-07-01
帖子:334
精华:0

可用积分:392 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2007-9-15 21:26 



QUOTE:
原帖由 dearvoid 于 2007-9-15 21:10 发表
不借助 external 的 command,直接数一下也不麻烦啊:

谢谢,还有个问题:

$cat > 1
                         this is sample line
$
$cat 1
                         this is sample line
$line=`cat 1`
$echo $line
this is sample line

空格被去掉了,有什么办法不自动trim的呢?



您对本贴的看法:鲜花[0] 臭蛋[0]
wdavid
圣骑士




CU编号: 558509
注册:2007-4-30
最后登录: 2009-06-23
帖子:88
精华:0

可用积分:669 (丰衣足食)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:保密
状态:...离线...

[个人空间] [短信] [博客]


9楼 发表于 2007-9-15 22:18 

try
line=`cat -v 1`



您对本贴的看法:鲜花[0] 臭蛋[0]
iamkey9
精灵王
三楼楼长




CU编号: 457420
注册:2006-8-23
最后登录: 2009-07-01
帖子:334
精华:0

可用积分:392 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2007-9-15 23:03 



QUOTE:
原帖由 wdavid 于 2007-9-15 22:18 发表
try
line=`cat -v 1`

no lucky
======

$cat -v 1
                         this is sample line
$line=`cat -v 1`
$echo $line
this is sample line



您对本贴的看法:鲜花[0] 臭蛋[0]

首页 » 论坛 » Shell »


 


Copyright © 2001-2009 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.050376 second(s), 4 queries , Gzip enabled