问题:我想使用shell脚本删除:
"""
111
222
"""
or
'''
111
222
'''
但请勿删除
s = """
111
222
"""
我测试以下方式:
find -name *.py | xargs -i sed -i "/^\s*\"\"\".*\"\"\"$/d" {}
find -name *.py | xargs -i sed -i '/"""/,/"""/d' {}
但我不知道
s = """
111
222
"""
请帮助
这样的测试代码,谢谢 > “”” 模板 class Foo { 上市: virtual int Bar(); }; “”“
source = """
class Foo {
public:
virtual int Bar();
};
"""
"""
template<class T>
class Foo {
public:
virtual int Bar();
};
"""
source = """
class Foo {
public:
virtual void Bar(bool flag) const;
};
"""
source = """
class Foo {
public:
virtual int Bar(void);
};
"""
uptonow: 该 “”” AAA “”” 和 = “”” BBB “”” 已经测试好了 函数delete_multiline_comments
function delete_multiline_comments
grep -n '\"\"\"' gmock_class_test.py | sed '/=/,+1d' >a.txt
line=$(wc -l a.txt| awk '{print $1}')
for (( i=0;i<$line/2;i++ ))
do
second=`tail -1 a.txt | tr -cd "[0-9]"`
sed -i '$d' a.txt
first=`tail -1 a.txt | tr -cd "[0-9]"`
sed -i '$d' a.txt
sed -i "${first},${second}d" gmock_class_test.py
done
end
以下行用于删除“”“XXXX”“”和“''XXX'''行
sed -ie "/'''.*'''/d"
sed -i "/^\s*\"\"\".*\"\"\"$/d"
答案 0 :(得分:0)
没有sed,但您可以尝试vims。
对于你的问题,这是一个快速的方法(它交换&#34;&#34;&#34;用一个键:eh3UgT):
cat myfile.py | \
vims -e '=\s*"""' 'f\"xxxaeh3UgT\<esc>/\"\"\"\<enter>xxxaeh3UgT' \
'"""' 'V/\"\"\"\<enter>d' -t '%s/eh3UgT/"""/g'
它适用于我的测试文件!
说明:
'=s\*"""'
- 在{/ p>
=
然后"""
'f\"xxxaeh3UgT\<esc>/\"\"\"\<enter>xxxaeh3UgT'
- 在该匹配项上,使用"
(vim命令)移至第一个f\"
,然后删除引号xxx
,然后输入insert模式a
,然后键入eh3UgT
,然后移至下一个三重引号\<esc>/\"\"\"\<enter>
,然后将其删除xxx
,然后再次键入密钥a
然后{{ 1}}。
eh3UgT
- 匹配所有剩余的三重引号
'"""'
- 开始突出显示'V/\"\"\"\<enter>d'
,转到下一个三重引号V
,然后删除/\"\"\"\<enter>
。
d
- 打开普通的vim命令行模式,用三引号替换所有键
在这里,1。和2.行动起来&#34;保存&#34;字符串变量通过用键替换它们的引号,然后3.和4.删除三引号中包含的所有内容,然后5.用三引号替换键。
如果您担心偶然在其他地方匹配的密钥-t '%s/eh3UgT/"""/g'
,请将其缩短。如果您担心这是不安全的(比如这是一个重复的脚本),那么每次都会随机生成密钥。