我有一个大文件A(包含电子邮件),每封邮件一行.我还有另一个包含另一组邮件的文件B.
我将使用哪个命令从文件A中删除文件B中出现的所有地址.
所以,如果文件A包含:
A
B
C
Run Code Online (Sandbox Code Playgroud)
和文件B包含:
B
D
E
Run Code Online (Sandbox Code Playgroud)
然后文件A应该留下:
A
C
Run Code Online (Sandbox Code Playgroud)
现在我知道这是一个可能经常被问到的问题,但我只在网上发现了一个命令错误的分隔符.
任何帮助将非常感激!有人肯定会想出一个聪明的单行,但我不是shell专家.
我有两个文件(比如说a.txt和b.txt),两个文件都有一个名字列表.我已经sort在这两个文件上运行了.
现在我想找到a.txt不存在的行b.txt.
(我花了很多时间来找到这个问题的答案,所以记录下来以备将来参考)
我正在Mac上制作NW.js应用程序,并希望通过双击图标以开发模式运行应用程序.第一步,我正在尝试使我的shell脚本工作.
在Windows上使用VSCode(我想获得时间),我run-nw在项目的根目录创建了一个文件,其中包含:
#!/bin/bash
cd "src"
npm install
cd ..
./tools/nwjs-sdk-v0.17.3-osx-x64/nwjs.app/Contents/MacOS/nwjs "src" &
Run Code Online (Sandbox Code Playgroud)
但我得到这个输出:
$ sh ./run-nw
: command not found
: No such file or directory
: command not found
: No such file or directory
Usage: npm <command>
where <command> is one of: (snip commands list)
(snip npm help)
npm@3.10.3 /usr/local/lib/node_modules/npm
: command not found
: No such file or directory
: command not found
Run Code Online (Sandbox Code Playgroud)
我真的不明白:
\r\n用\n(以防\r造成了问题),但它改变不了什么.dirname指令),或者它可能不知道cd …我有两个文件,file1.txt和file2.txt. file1.txt有大约14K线,file2.txt约有20亿. 每行file1.txt有一个字段f1,而file2.txt有3个字段,f1through f3,分隔符|.
我想找到的所有行file2.txt那里f1的file1.txt比赛f2中file2.txt(或上线的任何位置,如果我们不想花费额外的时间分割的数值file2.txt).
file1.txt(约14K行,未排序):
foo1
foo2
...
bar1
bar2
...
Run Code Online (Sandbox Code Playgroud)
file2.txt(约20亿行,未排序):
date1|foo1|number1
date2|foo2|number2
...
date1|bar1|number1
date2|bar2|number2
...
Run Code Online (Sandbox Code Playgroud)
预期产量:
date1|foo1|number1
date2|foo2|number2
...
date1|bar1|number1
date2|bar2|number2
...
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,似乎需要几个小时才能运行:
fgrep -F -f file1.txt file2.txt > file.matched
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好,更快的方法使用常见的Unix命令或小脚本执行此操作.
我有两个很长但已排序的文件.如何获取不在第二个文件中的第一个文件的所有行?
文件1
0000_aaa_b
0001_bccc_b
0002_bcc <------ file2 have not that line
0003_aaa_d
0006_xxx
...
Run Code Online (Sandbox Code Playgroud)
文件2
0000_aaa_b
0001_bccc_b
0003_aaa_d
0006_xxx
...
Run Code Online (Sandbox Code Playgroud) 我试图比较两个文件,并希望打印匹配的行...文件中的行将是唯一的
FILE1.TXT
GERMANY
FRANCE
UK
POLLAND
Run Code Online (Sandbox Code Playgroud)
FILE2.TXT
POLLAND
GERMANY
Run Code Online (Sandbox Code Playgroud)
我试着用下面的命令
awk 'BEGIN { FS="\n" } ; NR==FNR{A[$1]++;NEXT}A[$1]' File1.txt File2.txt
Run Code Online (Sandbox Code Playgroud)
但它打印匹配记录两次,我希望它们打印一次......
UPDATE
预期产出
POLLAND
GERMANY
Run Code Online (Sandbox Code Playgroud)
电流输出
POLLAND
GERMANY
POLLAND
GERMANY
Run Code Online (Sandbox Code Playgroud) 编辑:
这里的目标是测试fileB中的行是否仍然存在于fileA中,如果不存在则从fileB中删除它们
1)fileA保存被覆盖的数据
2)fileB保存来自fileA的数据以进行计算和操作
3)一旦fileA发生变化,fileB中的特定行因为更改而不再在fileA中,那么fileB必须删除那些行以及
我想逐行读取文件并检查该行是否仍然存在于不同的文件中
fileA.txt具有类似的数据输入,但是每2秒写一次:
456 6554 56734657387365873456783456
457 4545 36747365467345735736345665
454 4357 98345783465785345567865535
456 6646 70899089089056879678575775
Run Code Online (Sandbox Code Playgroud)
fileA.txt的内容将附加到fileB.txt
fileA.txt >> fileB.txt
我有fileB.txt,看起来像这样:
456 6554 56734657387365873456783456
457 4545 36747365467345735736345665
454 4357 98345783465785345567865535
456 6646 70899089089056879678575775
Run Code Online (Sandbox Code Playgroud)
我的主要目标是读取fileB.txt并检查fileA.txt中是否仍存在每一行,如果不存在则从fileB.txt中删除该行
这是我开始的:
while read line
do
if grep -q "$line" fileA.txt; then
echo "This part is point less im still learning"
else
sed '/$line/d' ./fileB.txt
fi
EDIT:
Run Code Online (Sandbox Code Playgroud)
这里的目标是测试fileB中的行仍然存在于fileA中,如果不存在则从fileB中删除它们
1)fileA保存被覆盖的数据
2)fileB保存来自fileA的数据以进行计算和操作
3)一旦fileA发生变化,fileB中由于更改而不再在fileA中的行也必须从fileB done> fileB.txt中删除