-
需要对文件夹内的 1 万多个文件进行操作
-
将每个文件的第二行中的引号进行转义
例如某个文件内容是 (title 值以及其中的引号内容并不是固定的,且有可能出现多处内嵌引用)
...第一行内容
title = "标题中的"引号内容"需要转义"
...第三行及剩下的内容
需要修改成
...第一行内容
title = "标题中的\"引号内容\"需要转义"
...第三行及剩下的内容
需要对文件夹内的 1 万多个文件进行操作
将每个文件的第二行中的引号进行转义
例如某个文件内容是 (title 值以及其中的引号内容并不是固定的,且有可能出现多处内嵌引用)
...第一行内容
title = "标题中的"引号内容"需要转义"
...第三行及剩下的内容
需要修改成
...第一行内容
title = "标题中的\"引号内容\"需要转义"
...第三行及剩下的内容
|
lululauAug 16, 2020 via iPhone
1
原始文本没有转义,怎么判定嵌套层级?你倒是说下规则啊
|
|
2
@lululau 原始文本格式是 title = "{{标题内容}}" ,把 {{标题内容}} 的里面包含的引号转义掉就行,不需要考虑嵌套
|
|
3
写了一版粗糙的 不知道怎么优化
find ./ -type f | xargs sed -i -e '2s/"/\\"/g' -e '2s/\\"/"/' -e '2s/\(.*\)\\"/\1"/' |
|
rrfengAug 16, 2020 via Android
4
意思是把非首尾的“换掉就行了吧?
|
|
5
@rrfeng en 是这样的。。
|
|
6
sed -i '2{s/title = "\(.*\)"/\1/;s/"/\\"/g;s/\(.*\)/title = "\1"/;}' data.txt
好像 sed 没办法直接对 group 项做处理吧 |
|
7
每次看到这么复杂的,我直接拿脚本语言处理的。怎么方便怎么来
|
|
8
awk -F\" 'NR!=2; NR==2 { OFS="\""; for(i=2; i<NF-1; i++) $i=$i"\\" ; print }'
|
|
9
s/"/\\"/g;s/^\\//;s/\\"$/"/
先替换所有的,再把头尾去掉。 |
|
rrfengAug 16, 2020 via Android
10
或者加断言引号不是开头或者结尾的,再替换
|