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 ]) は、
先頭文字から始まり、長さ文字の長さの文字列部分文字列を返します。