我有一个包含2列数据的大文件和一个包含3列数据的第二个大文件。我想基于第一个文件从第二个文件中提取第3列。这意味着如果我有以下第一个文件:
A B
C V
和第二个:
A B 3
C V 4
B G 6
我应该进入输出文件:
A B 3
C V 4
是否可以使用shell脚本?
答案 0 :(得分:0)
您可以使用AWK执行此操作:
% awk 'NR == FNR {a[$0] = 1; next}a[$1 FS $2]' file1 file2
A B 3
C V 4
故障:
NR == FNR { # Run block for file1 only
a[$0] = 1 # Store line in associative array
next # Skip next block
}
a[$1 FS $2] # Print lines from file2 if they are in associative array
# Same as writing a[$1 FS $2] { print $0 }
grep的另一种方法是:
grep -f file1 file2
将尝试将file1中的每一行与来自file2的行匹配。但这不会在字符串的开头开始搜索。
答案 1 :(得分:0)
您也可以使用grep命令实现相同的功能。但可能需要更长时间。
$ cat file1.txt
A B
C V
$ cat file2.txt
A B 3
B G 6
C V 4
$
以下是相同的grep版本:
$ while read line ; do grep "^$line" file2.txt ; done < file1.txt
A B 3
C V 4
$
答案 2 :(得分:0)
简单的int count = 0;
for (Row row : sheet) {
if (row.getCell(5) != null) {
count += 1;
}
}
和cat
组合可以在我的zsh中使用。
grep
或
cat 2.txt | grep "$(cat 1.txt)"
A B 3
C V 4