分页: 1 / 1
如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 14:24
由 hjjdebug
有两个文件。 一个文件叫all.txt, 记录了所有的文件名称。
另一个文件叫search.txt. 记录了待查找的文件名称。
现在要做的是:从search.txt 中取出一个文件名。例如第一个boys00264
在all.txt 中去查找,如果找不到,就留着。
如果找到了,就删除该行。
目的是看一看, search.txt 中有哪些文件在all.txt 中不存在。
cctv5a01022 存在, 需要删除该行。
(附图)
[img]
[/img]
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 14:33
由 hjjdebug
文件很多,不要试图手工完成工作。
由于查找时有找到,找不到两种情况,录制宏命令好像不行吧?
编script 也可以,求答案! 致谢!
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 14:53
由 tailsgao
用sed,awk编个脚本吧
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 15:10
由 hjjdebug
tailsgao 写了:用sed,awk编个脚本吧
编个脚本也行啊,求示例。
c 语言我知道我能够解决。但那太麻烦了。
vim 直接解决最好。
vim script 解决也很好。
脚本能解决也很好。
总之, 方法越简单越好。
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 15:17
由 Methuselar
对输出顺序没要求的话:
代码: 全选
awk 'FNR == NR { d[$1] = $0 } FNR < NR { d[$0] = "" } END {for (i in d) { if (d[i]) print d[i]}}' search.txt all.txt
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 16:00
由 tailsgao
#! /bin/bash
f1=7
f2=8
exec 7<search.txt
exec 8<all.txt
while read line
do
while sed '/"$line"' f2
do
sed '/"$line"/d' f1
done
done
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 16:03
由 hjjdebug
Methuselar 写了:对输出顺序没要求的话:
代码: 全选
awk 'FNR == NR { d[$1] = $0 } FNR < NR { d[$0] = "" } END {for (i in d) { if (d[i]) print d[i]}}' search.txt all.txt
第一次看到这么复杂的awk 代码, google 了一下NR, FNR ....
竟然被我看懂了,
语言是想通的。 感谢!Methuselar
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 16:25
由 hjjdebug
tailsgao 写了:#! /bin/bash
f1=7
f2=8
exec 7<search.txt
exec 8<all.txt
while read line
do
while sed '/"$line"' f2
do
sed '/"$line"/d' f1
done
done
while sed '/"$line"' f2
有一个错误提示, sed: -e 表达式 #1, 字符 8:未终止的地址正则表达式! ?
添加一个/, 将这句话改为:while sed '/"$line"/' f2
错误为: sed: -e 表达式 #1, 字符 9: 遗漏命令
请问如何解决?
bash 的这种写法, 也让我开眼! 感谢!
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 17:20
由 lilydjwg
[bash]
comm -23 <(sort all.txt) <(awk '{print $1}' search.txt | sort)
[/bash]
原来 search.txt 里还有奇怪的东西么……说清楚呀。
Re: 如何操作vim 解决该问题。 宏能行吗?(附图)
发表于 : 2014-01-10 19:08
由 hjjdebug
lilydjwg 写了:[bash]
comm -23 <(sort all.txt) <(awk '{print $1}' search.txt | sort)
[/bash]
原来 search.txt 里还有奇怪的东西么……说清楚呀。
估计是网络传输问题,是不是成了dos 格式了?
谢谢,针对这个问题,你的方法可能是最简单的。 您直接用已有的命令完成了文件比较。