Chinaunix
标题:
sed删除括号里的空格
[打印本页]
作者:
uarenotalone
时间:
2013-03-18 23:17
标题:
sed删除括号里的空格
比如文本是这个样子的:
sd f f [a b c cddd eee]
如何把括号里的空格删除掉……
作者:
blackold
时间:
2013-03-19 05:55
try:
sed ':n;s/\(\[[^][ ]*\) \+/\1/g;tn' urfile
复制代码
作者:
yestreenstars
时间:
2013-03-19 09:24
本帖最后由 yestreenstars 于 2013-03-19 10:16 编辑
@blackold
黑哥是起得早,还是睡得晚啊,凌晨6点就在发帖
作者:
blackold
时间:
2013-03-19 09:32
本帖最后由 blackold 于 2013-03-19 10:00 编辑
回复
3#
yestreenstars
睡得晚&&起得早。
作者:
Shell_HAT
时间:
2013-03-19 09:55
echo "sd f f [a b c cddd eee]" | awk -F '[' -vOFS='[' 'gsub(/ /,"",$2)'
复制代码
作者:
pix77
时间:
2013-03-19 10:28
回复
5#
Shell_HAT
为什么加了{},这个结果就不对了?
echo "sd f f [a b c cddd eee]" | awk -F '[' -vOFS='[' '
{
gsub(/ /,"",$2)
}
'
作者:
Shell_HAT
时间:
2013-03-19 10:35
回复
6#
pix77
echo "sd f f [a b c cddd eee]" | awk -F '[' -vOFS='[' '{gsub(/ /,"",$2)}1'
复制代码
作者:
pix77
时间:
2013-03-19 10:39
回复
7#
Shell_HAT
呵呵,为什么会这样?
作者:
pix77
时间:
2013-03-19 11:11
找到了:
[root@postgresql-1 ~]# echo "sd f f [a b c cddd eee]" | awk -F '[' -vOFS='[' --profile=/tmp/a '{gsub(/
/,"",$2)}'
[root@postgresql-1 ~]# cat /tmp/a
# gawk profile, created Tue Aug 21 19:29:34 2012
# Rule(s)
{
gsub(/ /, "", $2)
}
[root@postgresql-1 ~]# echo "sd f f [a b c cddd eee]" | awk -F '[' -vOFS='[' --profile=/tmp/a 'gsub(/
/,"",$2)'
sd f f [abccdddeee]
[root@postgresql-1 ~]# cat /tmp/a
# gawk profile, created Tue Aug 21 19:29:45 2012
# Rule(s)
gsub(/ /, "", $2) {
print $0
}
[root@postgresql-1 ~]#
作者:
yestreenstars
时间:
2013-03-19 11:22
@pix77
原来还有--profile这个参数,学习了~
作者:
pix77
时间:
2013-03-19 11:23
可以算是debug了,要么重新编译awk
作者:
Shell_HAT
时间:
2013-03-19 12:05
回复
8#
pix77
因为6楼的写法没有default action --- print
作者:
uarenotalone
时间:
2013-03-19 12:40
回复
2#
blackold
学习了。
作者:
uarenotalone
时间:
2013-03-19 12:42
回复
5#
Shell_HAT
这个有个问题。。如果该行有多个中括号括起来的字符,都要求去空格。按这个方法,只能去掉第一个
作者:
Shell_HAT
时间:
2013-03-19 13:00
回复
14#
uarenotalone
请给点数据,以便测试。
作者:
pix77
时间:
2013-03-19 13:03
回复
12#
Shell_HAT
嗯,默认就是print
作者:
uarenotalone
时间:
2013-03-19 13:07
回复
15#
Shell_HAT
比如说a b c [a c d ] dd d [e e e ] i i i [ f d dd ff dd ]……
像这样的一行有数目不定的【】组。我试了下,只有第一组的中括号的空格去掉了。。。
,是不是用awk还有其他的方法呢
作者:
pix77
时间:
2013-03-19 13:21
这个不就行的:sed ':n;s/\(\[[^][ ]*\) \+/\1/g;tn' urfile
作者:
yestreenstars
时间:
2013-03-19 13:27
awk 'BEGIN{RS="[][]";ORS=""}t=="["{gsub(/ /,"");print "["$0"]";t=RT;next}{t=RT}1'
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2