TA的每日心情 | 开心 2019-8-21 08:44 |
---|
签到天数: 163 天 [LV.7]常住居民III
|
本帖最后由 mikeee 于 2019-1-12 18:20 编辑 5 f+ o4 D* m" ? f$ U; U4 K/ b
" ]4 @2 Y# S# W- A2 [
其实很简单,假定 tmp.txt 里含 'a', 要在Windows的 cmd里换成 "a" 存到 tmp1.txt 里。
6 q% ^! ~3 z) X) _/ f+ N s5 [' P我自己也算用命令行用得比较多的人。我的Win10里的 Gow、git、cygwin里含sed、awk、tr。 在 cmd 和 conemu 里试过' F1 ]; z; Y. w+ C0 I5 R
- sed "s/'/\"/g" tmp.txt
5 s9 i9 \# p, @可以换,但无法存到另一个文件: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('\'', '\"'))" 可以替换,但没法用 > 导向。0 H1 b6 k: s7 i2 D2 P0 f3 y
4 R! k; l( t# d主要问题是这个 \": 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 都没问题。+ n* b7 E) V+ E, _) E- j
1 i" k: `8 i& B* }$ L& x
不知道各路高人有什么高招没有,感谢。谷歌了一下,好像powershell 里可以,但我暂时不太想学powershell。% C5 N9 Y5 Q; g2 [
# b$ J- P1 i2 w4 ?; \! L% U/ W
sed 里的 -i 解决了问题,感谢 atauzki。
- o' w4 @4 e4 P0 h3 b; t* v
7 V, x* N2 F6 E7 k- @8 X* J我自己折腾的python命令行,太繁琐,不过也记录一下:
0 W! u" W0 Z. D+ }( `/ p- cat tmp.txt| python -c "import sys; import sys; str_=sys.stdin.read().replace('\'', '"'); f = open('tmp1.txt', 'wt', encoding='utf8'); f.write(str_)"
; |3 A3 d' i% L
复制代码 9 y4 q/ y8 ]/ o( Q0 [5 R
|
|