Linux 特定格式的浮点数的Bash问题
(bash-linux中需要)我有一个这样的文件Linux 特定格式的浮点数的Bash问题,linux,awk,grep,Linux,Awk,Grep,(bash-linux中需要)我有一个这样的文件 1.415949602 91.09582241 91.12042924 91.40270349 91.45625033 91.70150341 91.70174342 91.70660043 91.70966213 91.72597066 91.7287678315 91.7398645966 91.7542977976 91.7678146465 91.77196659 91.77299733 abcdefghij 91.7827827 91.
1.415949602
91.09582241
91.12042924
91.40270349
91.45625033
91.70150341
91.70174342
91.70660043
91.70966213
91.72597066
91.7287678315
91.7398645966
91.7542977976
91.7678146465
91.77196659
91.77299733
abcdefghij
91.7827827
91.78288651
91.7838959
91.7855
91.79080605
91.80103075
91.8050505
sed 's/^91\.//' file (working)
有没有可能我能做到这三个步骤
我先试试这个
cat input | tr -d 91. > 1.txt (didnt work)
cat input | tr -d "91." > 1.txt (didnt work)
cat input | tr -d '91.' > 1.txt (didnt work)
然后
然后
最终单线解决方案
cat input.txt | sed 's/\91.//g' | grep -x '.\{10\}' | grep "^[6-9]" > output.txt
您的“最终”解决方案:
cat input.txt |
sed 's/\91.//g' |
grep -x '.\{10\}' |
grep "^[6-9]" > output.txt
应避免,并将sed
脚本中的反斜杠移到正确的位置(我添加了^
锚定,并删除了g
标志,因为您不希望一行中出现多个匹配)
您可能还可以摆脱至少一个,但在这一点上,我将切换到Awk:
awk '{ sub(/^91\./, "") } /^[6-9].{9}$/' input.txt >output.txt
sub();最后一个条件是打印与正则表达式匹配的行
同样的内容可以方便地(但可读性较差)写入sed
:
sed -n 's/^91\.([6-9][0-9]\{9\}\)$/\1/p' input.txt >output.txt
假设您的sed
方言支持BRE regex,重复类似[0-9]\{9\}
您编写了哪些代码来解决这个问题,以及您到底在哪里面临问题?因此,我们鼓励用户增加他们为解决自己的问题所付出的努力,所以请添加SO并让我们知道。请注意,这些数字都没有长度10,除非您将前导的91.
替换为0.
而不是删除91
。(在这种情况下,它们都不会以6、7、8或9开头。)@RavinderSingh13请刷新tr-D91。
将从输入中删除所有9
s、1
s和
s,无论它们出现在何处。它不会删除特定字符串91.
。
sed 's/^91\.//' input.txt |
grep -x '.\{10\}' |
grep "^[6-9]" > output.txt
awk '{ sub(/^91\./, "") } /^[6-9].{9}$/' input.txt >output.txt
sed -n 's/^91\.([6-9][0-9]\{9\}\)$/\1/p' input.txt >output.txt