找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32455|回复: 9

[文本处理] [己解决]删除行尾小数点后面的小数

[复制链接]
发表于 2019-4-15 09:37:42 | 显示全部楼层 |阅读模式
买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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2019-4-15 09:42:43 | 显示全部楼层
  1. gawk "gsub(/\..*/,"",$5)" 1.txt > 2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
keshun + 1 谢谢

查看全部评分

发表于 2019-4-15 09:45:48 | 显示全部楼层
  1. sed "s/\.[0-9]\+$//" 1.txt > 2.txt
复制代码

评分

参与人数 2技术 +2 收起 理由
smss + 1 乐于助人
keshun + 1 谢谢

查看全部评分

发表于 2019-4-19 19:05:31 | 显示全部楼层
Batcher 发表于 2019-4-15 09:45



只能输入范围0~9999999999999999999999999999999999999999999999999999.999999999999的正则表达式有吗
发表于 2019-4-19 22:23:50 | 显示全部楼层
本帖最后由 WHY 于 2019-4-19 22:33 编辑

回复 4# smss
  1. @echo off
  2. set "s=12345.6789"
  3. echo;%s%|sed -n -r "/^([1-9][0-9]{0,51}|0)(\.[0-9]{0,12})?$/p"|findstr .&&echo;Y||echo;N
  4. pause
复制代码
发表于 2019-4-19 22:27:09 | 显示全部楼层
本帖最后由 WHY 于 2019-4-19 22:32 编辑
  1. set "s=9999999999999999999999999999999999999999999999999999.999999999999"
  2. PowerShell "'%s%' -match '^(?:[1-9]\d{0,51}|0)(\.\d{0,12})?$'"
复制代码
发表于 2019-4-19 23:08:26 | 显示全部楼层
本帖最后由 smss 于 2019-4-19 23:23 编辑
回复  smss
WHY 发表于 2019-4-19 22:23
  1. set /p Z=请输入数字:
  2. if /i "%Z%"=="q" exit
  3. echo %Z%|findstr "^(?:[1-9]\d{0,51}|0)(\.\d{0,12})?$">nul||(echo 输入错误,超出范围&goto X)
  4. pause
复制代码
这样不行 搜了好多 这是不是不通用
发表于 2019-4-20 11:38:23 | 显示全部楼层
回复 7# smss


    findstr 这么容易搞定,还要 sed 做什么?
批处理脚本而已,先谈“够用”,别动不动就谈通用
发表于 2019-4-20 11:41:20 | 显示全部楼层
  1. @echo off
  2. set "s=9999999999999999999999999999999999999999999999999999.999999999999"

  3. 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 (
  4.     set "a=%%i"
  5.     set "b=%%j"
  6. )

  7. if defined a (
  8.     if defined b (
  9.         if "%b:~12%" NEQ "" (
  10.             echo;N
  11.         ) else if "%a:~52%" NEQ "" (
  12.             echo;N
  13.         ) else (echo;Y)
  14.     ) else if "%a:~52%" NEQ "" (
  15.         echo;N
  16.     ) else (echo;Y)
  17. ) else (echo;N)
  18. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 好 够用就行 关键网上那帖子都没有调试一下 ...

查看全部评分

发表于 2019-4-20 14:39:06 | 显示全部楼层
WHY 发表于 2019-4-20 11:41


也看不了不少帖了 看来BAT0对位数限制真没法大括号
  不能通用 想精减需要学会多种语言周转
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 05:12 , Processed in 0.021070 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表