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を使用AWK して true を出力することはできますかa? それ以外の場合、最初の文字は常にaスペースです。

今のところ私は使用していますGREP

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

上記の最初のもののようないくつかの関数が別々のファイルにあり、先頭に追加された に基づいて分類したいと考えていますa

これを簡単に、それ自体を使用して複数のファイルで実行することは可能ですか。私は、何百ものコンストラクトの使用を回避することをGREP本当に望んでいます。SEDAWKif

提案やより良いアルゴリズムはいつでも歓迎します:)

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ますか?、またはで好きな
だけファイルを指定できますが、ファイルごとに「True」が必要かどうか、ファイルのいずれかにこのパターンが含まれている場合は tru が必要かどうかは不明です。前者を仮定しましょう:grepsedawk

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 に答える