TA的每日心情 | 开心 2019-8-21 08:44 |
---|
签到天数: 163 天 [LV.7]常住居民III
|
本帖最后由 mikeee 于 2019-1-12 18:20 编辑 8 }# f6 N6 d, A: Q L9 B: a
0 z& l, ?) W; r* _& v
其实很简单,假定 tmp.txt 里含 'a', 要在Windows的 cmd里换成 "a" 存到 tmp1.txt 里。/ ^" S# i4 r4 h6 t
我自己也算用命令行用得比较多的人。我的Win10里的 Gow、git、cygwin里含sed、awk、tr。 在 cmd 和 conemu 里试过
0 c( p* s/ C& V5 J. G# W- sed "s/'/\"/g" tmp.txt/ e* Z! e' T7 Y) _
可以换,但无法存到另一个文件: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('\'', '\"'))" 可以替换,但没法用 > 导向。
2 ~9 b: m6 _+ |/ |
5 K; S- `- B5 b! M主要问题是这个 \": 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 都没问题。/ T7 ]$ f; X" h& h* s+ \; ?
( q8 L2 Y' A, [
不知道各路高人有什么高招没有,感谢。谷歌了一下,好像powershell 里可以,但我暂时不太想学powershell。
$ ?2 ]5 B/ K- v8 E# ^" D6 L$ n+ u7 t# B4 a; x9 e! ^7 X$ V
sed 里的 -i 解决了问题,感谢 atauzki。% w2 b7 z: N) S! w
/ ]& L1 O" ]8 A; W: ]$ }5 {
我自己折腾的python命令行,太繁琐,不过也记录一下: N d. K7 r( C$ [/ Z8 i% r b/ o
- cat tmp.txt| python -c "import sys; import sys; str_=sys.stdin.read().replace('\'', '"'); f = open('tmp1.txt', 'wt', encoding='utf8'); f.write(str_)"
+ W) a" f' q- ?9 e9 p: w* s2 D
复制代码 : y9 M; `/ Y9 j9 {" H: C
|
|