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

sed 文本流处理后的结果存入变量

[复制链接]
发表于 2021-4-22 14:56:07 | 显示全部楼层 |阅读模式
想要把 sed 的处理结果存入变量

但是 for 在 echo 遇到特殊字符的时候就会崩,不使用临时文件有更好的处理方案吗?

或者其它命令也可以
  1. for /f "" %%i in ('echo (123) ^| sed -R"s/^.+([\w -]+).+/\1/"') do (
  2.         set a=%%i
  3. )
复制代码
 楼主| 发表于 2021-4-22 14:36:39 | 显示全部楼层

sed 文本流处理后的结果存入变量

想要把 sed 的处理结果存入变量

但是 for 在 echo 遇到特殊字符的时候就会崩,不使用临时文件有更好的处理方案吗?

或者其它命令也可以
  1. for /f "" %%i in ('echo (123) ^| sed -R"s/^.+([\w -]+).+/\1/"') do (
  2.         set a=%%i
  3. )
复制代码
 楼主| 发表于 2021-4-22 14:51:32 | 显示全部楼层
啊~发错版块了,这是Bat问题,麻烦删帖
发表于 2021-4-22 15:33:02 | 显示全部楼层
echo str  ::str外加引号括起即可:"str"
  1. for /f "" %%i in ('echo "(123)" ^| sed -r "s/^.+([\w -]+).+/\1/"') do set a=%%i
复制代码
一般没有出现单数双引号都是可以的!
 楼主| 发表于 2021-4-23 10:21:08 | 显示全部楼层
回复 2# cutebe

试过加双引号,但是遇到更多各种怪异问题

首先输出的文本串是 带有双引号的,这样在 sed 处理的时候就需要考虑这个双引号的问题
  1. sed -r "s/"([\w ]+).+/\1/"'
复制代码
在命令行中,该怎么对这个开头为双引号的内容进行识别呢?
  1. for /f "delims=" %%i in ('echo "PDF Shaper(PDF工具箱)" ^| sed -r "s/\b*([\w ]+).+/\1/"') do echo %%i
复制代码
另外就上述例子中,如何提取到 PDF Shaper,实测输出得到的是 "PDF
发表于 2021-4-23 11:34:47 | 显示全部楼层
本帖最后由 cutebe 于 2021-4-23 12:15 编辑

去除开头引号:

法一 sed:sed "s/.str1/str2/"   :: 。点取单个字符

法二 批处理:%%~i        ::去除外围引号
  1. for /f "delims=" %%i in ('echo "PDF Shaper(PDF工具箱)" ^| sed -r "s/.([a-zA-Z ]+).+/\1/"') do echo (%%i)
  2. for /f "delims=" %%i in ('echo "PDF Shaper(PDF工具箱)" ^| sed -r "s/([a-zA-Z ]+).+/\1/"') do echo {%%~i}
  3. for /f "delims=" %%i in ('echo "PDF Shaper(PDF工具箱)" ^| sed -r "s/((\w ?)+).+/\1/"') do echo [%%~i]
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 04:51 , Processed in 0.014796 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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