在Unix中匹配文件的字符串

问题描述 投票:3回答:3

我在目录$ 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

我如何更有效地做到这一点?

shell unix ksh
3个回答
1
投票

这是一个完成所有操作的命令,为每个匹配的文件打印Good,为不匹配的文件打印Bad


2
投票

首先,请确保头文件中的行由文件名


1
投票

与AWK一起尝试此>]

for file in ./File_*
do
  for line in `cat head_config.txt`
  do
    awk -v var="$line" '$0 ~ var && NR==1 {print FILENAME "PASSED TEST"}' $file
  done
done
© www.soinside.com 2019 - 2024. All rights reserved.