分页: 1 / 1

awk的substring问题

发表于 : 2013-08-14 13:56
ceclinux
在用awk截取字符串最后两个字符的时候,发现空格是无法截取的,求解

代码: 全选

awk '{len=length($NF) ;print substr($NF,len-1,len)}' worldissue.txt 
我有一行是

代码: 全选

^ILast but not least,                  $
截取的是t,
而不是两个空格
如果有其他的截取方法也行
谢谢了

Re: awk的substring问题

发表于 : 2013-08-14 15:12
zhw2101024
awk默认以空格作为分隔符,所以会把所有空格都过滤了。
如果要截取每一行最后两个字符的话,可以用

代码: 全选

sed -n 's/^.*\(.\{2\}\)$/\1/p' worldissue.txt
。awk适合对整齐的文本按列做批量处理

Re: awk的substring问题

发表于 : 2013-08-14 16:04
ceclinux
zhw2101024 写了:awk默认以空格作为分隔符,所以会把所有空格都过滤了。
如果要截取每一行最后两个字符的话,可以用

代码: 全选

sed -n 's/^.*\(.\{2\}\)$/\1/p' worldissue.txt
。awk适合对整齐的文本按列做批量处理
谢谢了,我居然没有想到这个问题

Re: awk的substring问题

发表于 : 2013-08-14 19:03
cao627

代码: 全选

$ echo "^ILast but not least,                  " | awk '{len=length($0) ;print substr($0,len-1,len)}' | tr ' ' 'a'
aa

Re: awk的substring问题

发表于 : 2013-08-23 0:23
lilydjwg
楼上 cao627 才是正确,不过这样子更简单:

代码: 全选

grep -o '..$'

Re: awk的substring问题

发表于 : 2013-08-23 1:18
ceclinux
lilydjwg 写了:楼上 cao627 才是正确,不过这样子更简单:

代码: 全选

grep -o '..$'
谢谢,突然发现4楼也是对的。。。
对awk机制还是不太懂啊
但是zhw2101024我也没看出哪里错了

Re: awk的substring问题

发表于 : 2013-08-23 1:23
lilydjwg
ceclinux 写了:
lilydjwg 写了:楼上 cao627 才是正确,不过这样子更简单:

代码: 全选

grep -o '..$'
谢谢,突然发现4楼也是对的。。。
对awk机制还是不太懂啊
但是zhw2101024我也没看出哪里错了
他没用 awk,解决了你的需求但是没解决你的疑惑。

Re: awk的substring问题

发表于 : 2013-08-24 18:50
zhw2101024
lilydjwg 写了:
ceclinux 写了:
lilydjwg 写了:楼上 cao627 才是正确,不过这样子更简单:

代码: 全选

grep -o '..$'
谢谢,突然发现4楼也是对的。。。
对awk机制还是不太懂啊
但是zhw2101024我也没看出哪里错了
他没用 awk,解决了你的需求但是没解决你的疑惑。
我错了,不求甚解,给的是workaround而不是fix :em06

Re: awk的substring问题

发表于 : 2013-08-25 19:49
ceclinux
zhw2101024 写了:
lilydjwg 写了:
ceclinux 写了:
lilydjwg 写了:楼上 cao627 才是正确,不过这样子更简单:

代码: 全选

grep -o '..$'
谢谢,突然发现4楼也是对的。。。
对awk机制还是不太懂啊
但是zhw2101024我也没看出哪里错了
他没用 awk,解决了你的需求但是没解决你的疑惑。
我错了,不求甚解,给的是workaround而不是fix :em06
我说过有其他的方法也行啊 :em01

Re: awk的substring问题

发表于 : 2013-08-25 20:31
lilydjwg
ceclinux 写了:
zhw2101024 写了:
lilydjwg 写了:
ceclinux 写了:
lilydjwg 写了:楼上 cao627 才是正确,不过这样子更简单:

代码: 全选

grep -o '..$'
谢谢,突然发现4楼也是对的。。。
对awk机制还是不太懂啊
但是zhw2101024我也没看出哪里错了
他没用 awk,解决了你的需求但是没解决你的疑惑。
我错了,不求甚解,给的是workaround而不是fix :em06
我说过有其他的方法也行啊 :em01
好啦,我也是随意地说了句,大家不要纠结啦 :-[