(尋ねとして)
cut -c2-11 <"$(cat $filetouse)"
// or in zsh just
cut -c2-11 <"$(< $filetouse)"
でファイル名でない限りファイルは1つ以上の改行文字で終わっていますが、それはかなり厄介で不便なのでほとんどありません:
の
の微調整:あなたのawk
は、変数参照${completeFile}
または${deltaFile}
(それらが単一引用符で囲まれawk
スクリプト内だから)ではない変数のいずれかの値を出力します。あなたが実際に値をしたい場合、私はあなたの説明から期待として、あなたはこの
awk -vf="$completeFile" -vd="$deltaFile" '{n++} END{if(n>=1000)print f; else print d}' <"$deltaFile"`
# the " around $var can be omitted if the value contains no whitespace and no glob chars
# people _often_ but not always choose filenames that satisfy this
# and they must not contain backslash in any case
か(彼らはすでにされていない場合)のenv VARSとしてシェルVARSをエクスポートするようにawkのVARSにシェルVARSを渡す必要がありますそしてまた、あなたがあなた自身のカウンタを必要としません
awk '{n++} END{if(n>=1000) print ENVIRON["completeFile"]; else print ENVIRON["deltaFile"]}' <"$deltaFile"
のように、awkがすでに入力レコード
awk -vf=... -vd=... 'END{if(NR>=1000)print f;else print d}' <...
以上簡潔
をカウントしてアクセス
awk -vf=... -vd=... 'END{print (NR>=1000?f:d)}' <...
または名前がスクリプト
awk -vf="$completeFile" 'END{print (NR>=1000?f:FILENAME)}' "$deltaFile" # no <
とあなたがすべてで中間ファイルを必要としない、上記のように末尾の改行を禁止するに提供されていますので、代わりにリダイレクトのファイル引数を使用して、ちょうど
cut -c2-11 <"$(awk -vf="$completeFile" -'END{print (NR>=1000?f:FILENAME)}' "$deltaFile")"
それとも、本当にawkを必要としない、wc
はカウントを行うことができますし、任意のPOSIXまたはクラシックシェルが比較に
を行うことができます
'$ {completeFile}'とは何ですか? – RomanPerekhrest
'$ {completeFile}'と '$ {deltaFile}'は実際のファイルの変数名です。 アイデアは、前月のcompleteFileと今月のcompleteFileを比較するプリプロセッサを持っています。その比較の出力はdeltaFileです。 大部分は空ですが、deltaFileがcompleteFileのxx%(> = 1000ステップ)より大きい場合は、completeFileをfileToUse経由で次のプロセスに渡したいだけです。そうでなければdeltaFileはfileToUseを使用して次のプロセスに移動します – sigmazen
おそらくdeltaFileは必要ありません。先月のcompleteFileと今月のcompleteFileをawkと比較してそこから行くことは意味をなさないかもしれません。簡潔でテスト可能なサンプル入力(すなわち完全なファイルバージョン)と期待される出力を含めるように質問してください。これはXY質問のような感じです。 –