Unixファイルからデータをインポートおよび置換する

Unixファイルからデータをインポートおよび置換する

1行のデータを含むファイルがあります。

DL2016-12-02 Advanced PW5038 6-09-012016-09-30949569014 PW5018 07554800010001089200001 00100010892 0000000000000000000 0 { HPS PW5018COCOAA007708200000010304DXQ7262016001                                                                                          

この形式でデータを取得しようとしています。0000001030.4M 00000000000.0{

私が使用するコマンドはcut -c 385-396,415-427 Filename|sed 's/./&./10'|sed 's/./& /13'|sed 's/./&./25'

これを行う簡単な方法を教えてください。任意の行数でファイルを完成させるには、これを行う必要があります。

私は以下を使用してデータを取得します

awk '{print substr($0,385,10)"."substr($0,395,2)" "substr($0,415,11)"."substr($0,426,2)}' ファイル名

今私は別のものを探しています。それぞれ0000001030.4M 00000000000.0{ M and {に変えたいです-1 and 5。これは次のようになります-0000001030.41 00000000000.05

答え1

あなたのサンプルコードは非常に具体的な要件を満たすのと同じくらい簡単です。 3つの個別のsedコマンドを1つにまとめることができます。

cut -c 385-396,415-427 Filename | sed 's/./&./10;s/./& /13;s/./&./25'

または、サブストリングをサポートするすべての言語/ツールを使用できます。たとえば、awk:

awk '{print substr($0,385,10)"."substr($0,395,2)" "substr($0,415,11)"."substr($0,426,2)}' Filename

~からGNU Awkユーザーガイド:

substr(string, start [, length ]) は、
先頭文字から始まり、長さ文字の長さの文字列部分文字列を返します。

関連情報