美好的一天成员,
我有一个输入文件,其中包含数字行(接近2000行)我想从数字字符串的每一行中“提取右边第二个到第八个数字”到一个单独的文件中,结果用逗号分隔,如图所示。
示例:input.txt
00000000000001303275310752
00000000000001827380519015
00000000000000800081610361
00000000000000449481894004
00000000000000449481894004
00000000000001812612607514
预期结果:newfile.txt
7531075,
8051901,
8161036,
8189400,
8189400,
1260751,
我猜是像'sed'之类的东西可以用来解决我的问题,但我不太确定如何实现这个目标。我已连接到在Solaris 5.10上运行的计算机。如果有人可以为我提供简短的解释,请注意。
的问候,
新手。
答案 0 :(得分:2)
对于固定宽度输入,请尝试:
cut -c19-26 input.txt | sed 's/$/,/'
也就是说,提取输入txt的第19个字符到第26个字符,然后用逗号替换行尾。
如果你有可变长度的线条,你需要一些不同的东西。
答案 1 :(得分:1)
您可以使用以下命令截断前导零:
sed 's/^0*//g'
因此像:
sed 's/^0*//g' input.txt | sed 's/$/,/'
应该有用。
答案 2 :(得分:1)
尝试:
perl -pe 's/^.*(\d{7})\d$/$1,/' < input.txt
或者如果你不喜欢正则表达式:
perl -pe '$_ = substr($_,-9,-2) . ",\n"' < input.txt
这适用于任何固定或可变长度的行。
答案 3 :(得分:0)
这是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,