質問

おはようメンバー、

数値の行(2000行に近い)を持つ入力ファイルがあります<!> quot;を抽出します。右から2桁目<!> quot;数値文字列のすべての行を個別のファイルに変換し、結果をコンマで区切って示します。

例:input.txt

00000000000001303275310752

00000000000001827380519015

00000000000000800081610361

00000000000000449481894004

00000000000000449481894004

00000000000001812612607514

期待される結果:newfile.txt

7531075、

8051901、

8161036、

8189400、

8189400、

1260751、

「sed」のようなものを使用して問題を解決できると思いますが、これをどのように達成するかはよくわかりません。 Solaris 5.10を実行しているマシンに接続しています

よろしく、

初心者。

役に立ちましたか?

解決

固定幅の入力については、次を試してください:

cut -c19-26 input.txt | sed 's/$/,/'

つまり、入力txtの19〜26番目の文字を抽出し、行末をコンマで置き換えます。

可変長の行がある場合、少し異なるものが必要になります。

他のヒント

次を使用して、先行ゼロを切り捨てることができます。

sed 's/^0*//g'

このように:

sed 's/^0*//g' input.txt | sed 's/$/,/'

動作するはずです。

試してください:

perl -pe 's/^.*(\d{7})\d$/$1,/' < input.txt

または正規表現が気に入らない場合:

perl -pe '$_ = substr($_,-9,-2) . ",\n"' < input.txt

これは、固定長または可変長の回線で機能します。

これはpythonのソリューションです。直感的に理解できるはずです:

$ cat data2
00000000000001303275310752
00000000000001827380519015
00000000000000800081610361
00000000000000449481894004
00000000000000449481894004
00000000000001812612607514

$ cat digits.py
import sys
for line in sys.stdin:
    print '%s,' % (line[-9:-2])

$ python digits.py < data2
7531075,
8051901,
8161036,
8189400,
8189400,
1260751,
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top