1

假设我有这样的文件:

      a  void measure()    
         {

      a  GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_7); // Pin assignment
         ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0);
         appended line for demonstration
         ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH0 | ADC_CTL_IE |ADC_CTL_END);
         ADCSequenceEnable(ADC0_BASE, 3);//sample sequence 3 is enabled.
         ADCIntClear(ADC0_BASE, 3);   // Clear the interrupt status flag.
         }

当且仅当以空格作为分隔符的第一个列之前,我可以使用SEDor来输出 true 。第一个字符始终是空格。AWKaa

截至目前我使用GREP

    if grep -q "^a" file.c; then
       echo "The file is prepended"
       else
       echo "the file is clean"
   fi

我在单独的文件中有几个函数,例如上面的第一个函数,并希望根据前面的a.

是否有可能使用它自己轻松地完成多个文件GREP。我真的更喜欢一个SEDAWK替代方案,避免使用if数百个结构。

建议或更好的算法总是受欢迎的:)

4

3 回答 3

4

很难说出你在问什么,但听起来你可能想要这个

grep -q ^a file.c && echo 'The file is appended' || echo 'the file is clean'

或者也许你真的想要这个:

grep -L ^a *.c

每个生成的文件名都是一个“附加”文件。

对于多个文件,您可以这样做

for file in *.c ; do
   grep -q '^a ' file.c && echo 'The file is appended' || echo 'the file is clean'
done

对于多个文件递归,尝试

find . -type f -name '*.c' -exec grep -q '^a ' {} \; -print

尽管要获得“正确”的输出,您需要做更多的工作。

于 2012-06-26T10:41:07.547 回答
1

你为什么用cat
您可以使用grep,sed或指定awk任意数量的文件,但我不清楚您是否希望每个文件都为“True”,如果任何文件包含此模式,则为 tru。让我们假设前者:

awk '/^a /{print FILENAME "is True"}' 'list-of-files'
于 2012-06-26T10:38:37.003 回答
0

尝试以下命令:

awk 'FNR==1&&($1=="a") {printf "The file %s is prepended\n",FILENAME}' *.c
于 2013-12-18T02:00:07.577 回答