2016-04-07 7 views
1

私は以下のコマンドを使用して固定長ファイルから特定の行を抽出しています。各ラインの長さ ラインはのは、TEST.DATが100行を持っていたとしましょう748awk - 特殊文字を持つ固定長行を出力する

awk 'substr($0,8,2)=="04"' test.dat > output.dat 

です。出力ファイルでは、行の一部が748文字未満であることがわかります。

awkが特別なchanractersを扱うときにラインを誇張しているからですか?もしそうなら、我々はそれを避けることができる方法はありますか?

以下の回答から、私はPOSIX awkがnullと他の特別なcharectersをヒットできないことを理解しています。 sedの別のオプションがありますか、grepが私のためにこれを行うことができますか?

+0

問題を引き起こすはずの特殊文字は、改行になります。 748文字の長文レコードに埋め込まれた改行はありますか? – jas

+0

はい最後の文字は改行です – manchand

+1

予想される748文字よりも小さい行が表示された場合は、レコードの途中に改行があるためですか? – jas

答えて

0

空に空を覆うことは私にとって問題ではなかったので、以下のコマンドを使用して必要なデータを取得しました。

perl -pe 's/\ 000// g'入力ファイル| awk 'substr($ 0,64,2)== "04"'>出力ファイル