掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 166|回复: 7

[求助] 请教如何在 Windows里cmd命令行将文件里的 ' 换成 ”

[复制链接]
  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 152 天

    [LV.7]常住居民III

    发表于 2019-1-12 16:13:24 | 显示全部楼层 |阅读模式
    本帖最后由 mikeee 于 2019-1-12 18:20 编辑 " q7 P; Y  c! ]5 J% l
    ) V6 b9 O- E9 I! h8 N
    其实很简单,假定 tmp.txt 里含 'a', 要在Windows的 cmd里换成 "a" 存到 tmp1.txt 里。, }: ]0 ^7 }. ]" R$ h$ R
    我自己也算用命令行用得比较多的人。我的Win10里的 Gow、git、cygwin里含sed、awk、tr。 在 cmd 和 conemu 里试过
    6 f: H$ B8 a4 o' ~' D, \& u
    • sed "s/'/\"/g" tmp.txt& c; P" e5 f' ^) l1 T, b
      可以换,但无法存到另一个文件:sed "s/'/\"/g" tmp.txt > tmp1.txt 和 sed "s/'/\"/g" tmp.txt| tee tmp1.txt 都出错。由于命令里含 \" 导致的。
    • tr: 不行, cat tmp.txt|tr "'" "\"" 可以替换, cat tmp.txt|tr "'" "\"" > tmp1.txt 出错。
    • awk:不行,  awk "gsub(/'/, \"\\\"\");" tmp.txt 可以替换但不能用 > 或 tee 导向另一个文件。
    • 命令行python:不行, cat tmp.txt| python -c "import sys; import sys; print(sys.stdin.read().replace('\'', '\"'))" 可以替换,但没法用 > 导向。
      9 @; U2 _/ [5 _. k; Q6 R* S

    " S& w# o' X) a" [$ x主要问题是这个 \": sed "s/'/x/g" tmp.txt > tmp1.txt、cat tmp.txt|tr "'" "x" > tmp1.txt、 awk "gsub(/'/, \"x\");" tmp.txt > tmp1.txt、cat tmp.txt| python -c "import sys; import sys; print(sys.stdin.read().replace('\'', 'x'))" > tmp1.txt 都没问题。
    . W2 M; q$ S$ I8 b( \2 q$ |
    2 R+ {8 v/ }7 B3 O不知道各路高人有什么高招没有,感谢。谷歌了一下,好像powershell 里可以,但我暂时不太想学powershell。
    ( T8 X" c" ?; u+ |2 x6 H0 q3 R
    ( j; E  d/ O! i/ Nsed 里的 -i 解决了问题,感谢 atauzki
    / C. N: X  d% y5 o
    . r% r8 D; ^% E, b7 t2 V3 S我自己折腾的python命令行,太繁琐,不过也记录一下:% Q! l8 S: b, _4 i
    1. cat tmp.txt| python -c "import sys; import sys; str_=sys.stdin.read().replace('\'', '"'); f = open('tmp1.txt', 'wt', encoding='utf8'); f.write(str_)"
      * k" Y9 z2 `7 x- _, e/ {& E) r
    复制代码

    3 v) q! G# z3 W, d0 x: Y

    本帖被以下淘专辑推荐:

  • TA的每日心情
    无聊
    2019-6-18 13:00
  • 签到天数: 139 天

    [LV.7]常住居民III

    发表于 2019-1-12 16:22:36 | 显示全部楼层
    先cp,然后用sed -i不行吗?

    点评

    评论右下角的“评分”不就可以送米么…  发表于 2019-1-12 18:07
    -i 好办法, 感谢!好像没办法送米……  发表于 2019-1-12 17:28

    评分

    1

    查看全部评分

  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-1-12 17:49:34 | 显示全部楼层
    试试4 L$ h: N  G* G
    1. sed -E "s/'/"/g" tmp.txt > tmp1.txt
    复制代码

    8 I' }3 x  s( [& I7 M2 x或者
    ! @; v4 ]$ g. p  ^
    1. sed -r "s/'/"/g" tmp.txt > tmp1.txt
    复制代码

    1 S! h! p* B  j, D3 Q$ T; L) Z8 h5 _& s
    或者如果用perl的话,试试:
    6 B0 T' |4 H1 ?
    1. perl -pe"s/\'/"/g" tmp.txt > tmp1.txt
    复制代码

    评分

    1

    查看全部评分

  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-1-12 17:54:52 | 显示全部楼层
    atauzki 发表于 2019-1-12 16:22
    ) X7 K. E. D6 J8 W先cp,然后用sed -i不行吗?

    # \" [8 o# X& \6 V. n' {# B也可以不用手动cp,直接-ibak

    评分

    1

    查看全部评分

  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-1-12 18:26:44 | 显示全部楼层
    perl 那个重新导向无效?什么意思 + h& ~2 L. c; X* C9 {: |5 ~! A

    8 w( p8 }2 c9 `7 M可以把 > tmp1.txt 删掉
    + B; o* n! J$ Z1 G/ F3 ^前面加上 -ibak 试试

    点评

    刚才查了一下,perl和sed在这方面是一样的  发表于 2019-1-12 18:52
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    顶部qrcode底部
    关注公众号送论坛充值码
    关注微信公众平台
    关注微信公众号 pdawiki,获取邀请码,看文抢积分,抽奖得浮云! Follow our Wechat official account "pdawiki", get invitation codes, and play the lottery to earn points (积分)!

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2019-6-26 16:29 , Processed in 0.670233 second(s), 17 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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