猫咪练习.txt test_0909_3434 test_8838 test_case_5656_5433 case_4333_3211 note_4433_2212
practice.txt 文件包含更多文件。 所需输出:
test_0909_3434 test_8838
这些测试文件包含一些数据,因此我需要将这两个文件数据合并为一个最终文件。
test_0909_3434 文件包含:
id name
1 hh
2 ii
test_8838 文件包含:
id name
2 ii
3 gg
4 kk
输出文件的最终输出:mergedfile.txt 将如下所示:
id name
1 hh
2 ii
3 gg
4 kk
我们也需要像上面的mergedfile.txt一样删除冗余数据
最佳答案
1) 简单化(两个输入文件中的数据“有序”且“格式正确”):
猫 f1 f2 |排序-u > f3
2) 更复杂(不是“按顺序”也不是“格式良好”)。使用正则表达式。
从两个输入文件中读取记录。假设输入记录称为“x”。
if [[ "${x}" =~ ^[[:space:]]*([[:digit:]]+)[[:space:]]+(.*)$ ]]; then
d="${BASH_REMATCH[1]}"
s="${BASH_REMATCH[2]}"
echo "d == $d, s == $s"
fi
aa["${d}"]="${k}"
其中 aa 是 Bash 关联数组(在 Bash >= 4x 中可用)。
声明-A aa=()
这假设第一个字段是一个整数(和一个键)。 key是否唯一,你可以做相应的处理。
如果比这更复杂,请考虑使用 Perl。
关于regex - 如何在 practice.txt 文件中只获取包含 'test' 字的文件并将数据合并到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718034/