Chinaunix

标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!! [打印本页]

作者: dddddd654321    时间: 2005-04-26 15:13
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
我a.txt文件里有如下一列记录:
1101
1201
345
675
......
我b.txt文件里有两列数据如下:

a    11010
b    110102
c     345
d    3456
e    3458
f     2333
..........
我想显示b文件里第2列的数据记录以a.txt文件的数据开头的 所有记录。
譬如:a.txt文件里1101
我b.txt文件里就有如下的显示:
a    11010
b    110102

。。。
我现在是想显示b文件里第2列里所有以a 文件记录开头的记录。
请问如何表达?
作者: mocou    时间: 2005-04-26 23:24
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
关注。。。。。。。。一下
作者: coolend    时间: 2005-04-26 23:39
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
try this? hopes it will help u

  1. while read i
  2. do
  3.     awk -v pattern=$i '{match($2,pattern);if(RSTART==1) print $0}' b.txt
  4. done < a.txt
复制代码

作者: dddddd654321    时间: 2005-04-27 13:06
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
谢谢楼上的哥们,不过上面程序运行的结果是完全匹配的结果,最后只显示为:
c     345

这里如何解决模糊匹配问题呀?
我如下用:
while read i
do
   awk -v pattern=$i '{(pattern~/^$2/);if(RSTART==1) print $pattern}' b.txt
done < a.txt

反而一行都没显示了,才怪哦!!
作者: dddddd654321    时间: 2005-04-27 13:08
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
上面写错了,应该是如下用的

while read i
do
   awk -v pattern=$i '{(pattern~/^$2/);if(RSTART==1) print $ $0}' b.txt
done < a.txt

但是还是一行都没显示了!!
作者: mocou    时间: 2005-04-27 13:59
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
  1. # cat a.txt
  2. 1101
  3. 1201
  4. 345
  5. 675
  6. # cat b.txt
  7. a    11010
  8. b    110102
  9. c     345
  10. d    3456
  11. e    3458
  12. f     2333
  13. # ./awk.awk
  14. a    11010
  15. b    110102
  16. c     345
  17. d    3456
  18. e    3458
  19. # cat awk.awk
  20. while read line
  21. do
  22.   grep $line b.txt
  23. done < a.txt
复制代码


其实偶是想看看grep -f如何贪婪匹配
作者: panlm    时间: 2005-04-27 14:06
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
cat a |while read line ; do cat b |grep -E "\<$line"; done
作者: mocou    时间: 2005-04-27 14:14
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
[quote]原帖由 "panlm"]cat a |while read line ; do cat b |grep -E "\<$line"; done[/quote 发表:



谢了
  1. cat a.txt|while read line;do grep $line b.txt;done
复制代码

作者: dddddd654321    时间: 2005-04-27 14:44
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
怪呀:我用:
cat awk.awk
while read line
do
grep $line b.txt
done < a.txt
怎么有如下提示:
: 没有那个文件或目录
b.txt:a    11010
b.txt:b    110102
: 没有那个文件或目录
: 没有那个文件或目录
b.txt:c     345
b.txt:d    3456
b.txt:e    3458
: 没有那个文件或目录
作者: mocou    时间: 2005-04-27 14:51
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
偶晕。vi file
内容如下:
while read line
do
grep $line b.txt
done < a.txt
作者: dddddd654321    时间: 2005-04-27 15:45
标题: 麻烦高手帮忙看个问题!!!!在线等,急!!!!!!!!
哥们呀,不是编辑文件的问题呀:
我试了下,还是有错误,难道是a和b文件格式的问题??
#cat a.txt
1101
1201
345
675
# cat b.txt
a    11010
b    110102
c     345
d    3456
e    3458
f     2333
# while read line
> do
> grep $line b.txt
> done < a.txt
: 没有那个文件或目录
b.txt:a    11010
b.txt:b    110102
: 没有那个文件或目录
: 没有那个文件或目录
b.txt:c     345
b.txt:d    3456
b.txt:e    3458
: 没有那个文件或目录
# cat a.txt|while read line;do grep $line b.txt;done
: 没有那个文件或目录
b.txt:a    11010
b.txt:b    110102
: 没有那个文件或目录
: 没有那个文件或目录
b.txt:c     345
b.txt:d    3456
b.txt:e    3458
: 没有那个文件或目录

大家说说是那里问题?




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