LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 796|回复: 12

文本处理问题求教

[复制链接]
发表于 2005-1-4 16:37:33 | 显示全部楼层 |阅读模式
文本如下:
jkasdfja&var=adsfasdfa&fasdfas
?var=asdfasf
var=asdfasfasdf&asdfasdf&fdasfaf
asdfafasdf&var=asfasdfasf&kjljsdlfjlasfj&dfasf
.....
.....


我需要"var="至"&"之间或者是从"var="至行尾那一段字符窜打印至屏幕。谢谢!
发表于 2005-1-4 17:22:33 | 显示全部楼层
用perl吧:
perl -ne 'print "$1\n" if /(var=\w+)&/' filename
发表于 2005-1-5 12:49:32 | 显示全部楼层
sed -e 's/^.*\(var=\)/\1/g;s/\(var=[^&]*\)&.*/\1/g' filename
发表于 2005-1-6 02:55:01 | 显示全部楼层
Post by cx6445
文本如下:
jkasdfja&var=adsfasdfa&fasdfas
?var=asdfasf
var=asdfasfasdf&asdfasdf&fdasfaf
asdfafasdf&var=asfasdfasf&kjljsdlfjlasfj&dfasf
.....
.....


我需要"var="至"&"之间或者是从"var="至行尾那一段字符窜打印至屏幕。谢谢!

  1. tr '&' '\n' <file|grep -o 'var.*'
复制代码
 楼主| 发表于 2005-1-6 09:14:39 | 显示全部楼层
Post by firemoth
sed -e 's/^.*\(var=\)/\1/g;s/\(var=[^&]*\)&.*/\1/g' filename


这个解决方法最适合我,谢谢呀~~不过我花了10多分钟才看明白大部份,也是因为我一直没有对sed进行较深一点的应用。
sed -e 's/^.*\(var=\)/\1/g;s/&.*//g'  filename
我觉得如果这样写我能完全看明白
现在不明白的一些地方是这个正则式:[^&]* 希望firemoth 兄能给我解释一下:)
发表于 2005-1-6 09:15:35 | 显示全部楼层
Post by tcpip

  1. tr '&' '\n' <file|grep -o 'var.*'
复制代码

Beautiful! Maybe this is the most traditional Unix way!
发表于 2005-1-6 09:26:46 | 显示全部楼层
Post by tcpip

  1. tr '&' '\n' <file|grep -o 'var.*'
复制代码

我发现直接用grep就可以了:

  1. grep -o 'var=[^&]*' filename
复制代码
 楼主| 发表于 2005-1-6 09:46:06 | 显示全部楼层
Post by freefall
我发现直接用grep就可以了:

  1. grep -o 'var=[^&]*' filename
复制代码


果然好用,但是实际应用中我只要var=后面的那一个变量
如果是用sed:sed -e 's/^.*\(var=\)//g;s/&.*//g'
我想了一下,但是grep好象不能直接做到,不知freefall兄能否用grep一个命令就能成功?
tr虽然巧妙,perl也精简,但是我不能考虑。因为实际应用中我处理的单个文本超个10个G,使用tr和perl的效率不是最好的。
发表于 2005-1-6 09:50:34 | 显示全部楼层
好哇。大家各抒己见。
 楼主| 发表于 2005-1-6 10:10:50 | 显示全部楼层
Post by firemoth
好哇。大家各抒己见。

别光叫好呀!帮兄弟解析一下这个正则式啊:[^&]*
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表