shell - 在 Unix 中匹配文件字符串

标签 shell unix ksh

我在 $FILES_DIR 目录中有 3 个文件

1) File_Apple.txt
2) File_Samsung.txt
3) File_Huwaei.txt

Header rows of File_Apple.txt

    AAA1,BBB2,CCC3

Header rows of File_Samsung.txt

    DDD1,EEE2

Header rows of File_Huwaei.txt

    FFF1,GGG2,HHH3,III4

还有一个名为 head_config 的文件,其中包含上述 3 个文件的标题行。

head_config.txt
AAA1,BBB2,CCC3
DDD1,EEE2
FFF1,GGG2,HHH3,III4

基本上我必须匹配文件的标题是否根据 head_config.txt 文件正确

我可以通过一些繁琐的过程来做到这一点:
单独复制每个文件的标题行并附加到新文件中。然后比较用 head.config.txt 创建的新文件
head -1 File_Apple.txt >> new_file.txt
head -1 File_Samsung.txt >> new_file.txt
head -1  File_Huwaei.txt >> new_file.txt

然后 cmp new_file.txt 到 head_config.txt

我怎样才能更有效地做到这一点?

最佳答案

首先,确保头文件中的行按字母顺序排列 文件名 .所以 head_config.txt 变成:

AAA1,BBB2,CCC3
FFF1,GGG2,HHH3,III4
DDD1,EEE2AAA1,BBB2,CCC3

然后执行这个命令:
diff head_config.txt <(head -q -n1 File_*)

如果文件匹配,则不会有输出,并且 $?将是 0 .

关于shell - 在 Unix 中匹配文件字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244240/

相关文章:

python - 为脚本设置临时环境变量

c++ - 找不到 boost 库

unix - Shell 脚本 "for"循环语法

linux - perl + perl 脚本位置在/etc/rc3.d 下,结果不同

linux - 无法在 csh 中获取 bash 配置文件

linux - Linux 上文件夹中的文件所有者列表

bash - 从文件读取时如何在 while 循环内读取输入?

bash - set -e 和简短测试

regex - 如何使用 Perl 忽略多行字符串中的最后一个换行符

linux - 用于检测系统是 32 位还是 64 位的 Shell 脚本