标题: [文本处理] [己解决]删除行尾小数点后面的小数 [打印本页]
作者: keshun 时间: 2019-4-15 09:37 标题: [己解决]删除行尾小数点后面的小数
买1 5.87 0.0000 7 3.722806
买7 5.38 -0.5842 2 1124.7
卖4 5.42 0.6557 4 383.96088
卖10 5.75 1.2877 1 174
卖13 5.95 1.2877 2 1144.53
求代码删除行尾小数点后面的小数,谢谢!
买1 5.87 0.0000 7 3
买7 5.38 -0.5842 2 1124
卖4 5.42 0.6557 4 383
卖10 5.75 1.2877 1 174
卖13 5.95 1.2877 2 1144
作者: Batcher 时间: 2019-4-15 09:42
- gawk "gsub(/\..*/,\"\",$5)" 1.txt > 2.txt
复制代码
作者: Batcher 时间: 2019-4-15 09:45
- sed "s/\.[0-9]\+$//" 1.txt > 2.txt
复制代码
作者: smss 时间: 2019-4-19 19:05
Batcher 发表于 2019-4-15 09:45
只能输入范围0~9999999999999999999999999999999999999999999999999999.999999999999的正则表达式有吗
作者: WHY 时间: 2019-4-19 22:23
本帖最后由 WHY 于 2019-4-19 22:33 编辑
回复 4# smss - @echo off
- set "s=12345.6789"
- echo;%s%|sed -n -r "/^([1-9][0-9]{0,51}|0)(\.[0-9]{0,12})?$/p"|findstr .&&echo;Y||echo;N
- pause
复制代码
作者: WHY 时间: 2019-4-19 22:27
本帖最后由 WHY 于 2019-4-19 22:32 编辑
- set "s=9999999999999999999999999999999999999999999999999999.999999999999"
- PowerShell "'%s%' -match '^(?:[1-9]\d{0,51}|0)(\.\d{0,12})?$'"
复制代码
作者: smss 时间: 2019-4-19 23:08
本帖最后由 smss 于 2019-4-19 23:23 编辑
回复 smss
WHY 发表于 2019-4-19 22:23
- set /p Z=请输入数字:
- if /i "%Z%"=="q" exit
- echo %Z%|findstr "^(?:[1-9]\d{0,51}|0)(\.\d{0,12})?$">nul||(echo 输入错误,超出范围&goto X)
- pause
复制代码
这样不行 搜了好多 这是不是不通用
作者: WHY 时间: 2019-4-20 11:38
回复 7# smss
findstr 这么容易搞定,还要 sed 做什么?
批处理脚本而已,先谈“够用”,别动不动就谈通用
作者: WHY 时间: 2019-4-20 11:41
- @echo off
- set "s=9999999999999999999999999999999999999999999999999999.999999999999"
-
- for /f "tokens=1,2delims=." %%i in ('echo;%s%^|findstr /b /e "[1-9][0-9]* 0 [1-9][0-9]*\.[0-9]* 0\.[0-9]*"') do (
- set "a=%%i"
- set "b=%%j"
- )
-
- if defined a (
- if defined b (
- if "%b:~12%" NEQ "" (
- echo;N
- ) else if "%a:~52%" NEQ "" (
- echo;N
- ) else (echo;Y)
- ) else if "%a:~52%" NEQ "" (
- echo;N
- ) else (echo;Y)
- ) else (echo;N)
- pause
复制代码
作者: smss 时间: 2019-4-20 14:39
WHY 发表于 2019-4-20 11:41
也看不了不少帖了 看来BAT0对位数限制真没法大括号
不能通用 想精减需要学会多种语言周转
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |