質問
おはようメンバー、
数値の行(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,
所属していません StackOverflow