2011-10-20 10 views
1

DBの異なるカラムに時刻とcronエントリを含めてcronファイルを処理したい。awkまたはgrepを使ってcronエントリを選択する

cat root | awk '{print $1, $2, $3, $4, $5, $6}' 

47 * * * * string=`find somefile`; echo $string > success.txt 2> err.txt 

awkを使用してcronの最初の5つのプレースホルダーをawkするのは簡単です。しかし、どのように私は実際のcronエントリを選択するのですか? 上記の例では、 "string"から "$ string"までのすべての項目を選択したいと考えています 標準とエラーアウトファイルパスも選択します。すなわちsuccess.txtとerr.txt

更新:

awk '{print $NF}' 

上記の最後の変数のために動作しますが、最後から2番目のを見つけることはありません、次の。

awk '{print $NF-2}' 
+1

こんにちは@shantanuo、あなたは必要になります: 'awk '{print $(NF-2)}''。 –

答えて

0

初期フィールドを取り除くために単純なアプローチがcutを使用することです:

cut -d' ' --complement -f1-5 

私は--complementフラグが拡張したものであるとして、これは、カットのGNUバージョンが必要と考えています。

  • 空白は単一のスペース
  • 両方のstdoutに標準化することができる。このアプローチは、いくつかの仮定を必要とする

    awk '{ 
        outfile=$(NF-2) 
        errfile=$NF 
        for(n=NF; n>(NF-4); n--) { $n = ""} 
        printf("command: %s\noutput: %s\nerror: %s\n", $0, outfile, errfile) 
    }' 
    

    注こと:

    私はフィールドに残りを分割するためにはawkを使用したいですstderrがリダイレクトされる

  • 出力ファイルとエラーファイルの名前に空白が含まれない
+0

ありがとうございます。しかし、標準出力ファイル名> 'xxx'とエラー出力ファイル名2> 'yyy'も必要です。最後の2>と>の後にテキストを見つける方法はありますか? – shantanuo

+0

質問を編集して、入力から正確な出力を表示してください。がんばろう。 – shellter

関連する問題