[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

买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
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. gawk "gsub(/\..*/,\"\",$5)" 1.txt > 2.txt
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. sed "s/\.[0-9]\+$//" 1.txt > 2.txt
复制代码
2

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

Batcher 发表于 2019-4-15 09:45



只能输入范围0~9999999999999999999999999999999999999999999999999999.999999999999的正则表达式有吗

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 WHY 于 2019-4-19 22:32 编辑
  1. set "s=9999999999999999999999999999999999999999999999999999.999999999999"
  2. PowerShell "'%s%' -match '^(?:[1-9]\d{0,51}|0)(\.\d{0,12})?$'"
复制代码

TOP

本帖最后由 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
复制代码
这样不行 搜了好多 这是不是不通用

TOP

回复 7# smss


    findstr 这么容易搞定,还要 sed 做什么?
批处理脚本而已,先谈“够用”,别动不动就谈通用

TOP

  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

评分人数

    • smss: 好 够用就行 关键网上那帖子都没有调试一下 ...技术 + 1

TOP

WHY 发表于 2019-4-20 11:41


也看不了不少帖了 看来BAT0对位数限制真没法大括号
  不能通用 想精减需要学会多种语言周转

TOP

返回列表