假设我有多个包含';'的字符串。只有当字符串中包含逗号时,我才想去掉';'。如果没有逗号,我想留下分号';'。
我想去掉分号的例子,';':
1,JoE,Stuff,more stuff; 05423089; 3029483-;98
输出:1,JoE,Stuff,more stuff 05423089 3029483-98
我将处理数十万行数据。
基本上我在这里做的是一个文件由逗号分隔,我想省略所有分号,';'。我知道你可以这样做与正则表达式环顾四周,但我不知道如何搜索和替换它们。
如果没有逗号或者不是以逗号分隔的文件,我希望保留所有分号。我可能有一些文件是用';'或分号分隔的。
的例子:
1;乔,东西;更多的东西;054230893029483 - 98
在上面的例子中,我不想删除';'。
到目前为止我写的是:
s/((?=;)^.*?,.*?$)/$1/gi;
(?=;)检查由(^.?,.?)封装的分号,这是我想要匹配的字符串。我认为我没有正确调用我的"$1"one_answers"$2"。
搜索和替换的正确方法是什么?
因此,如果一行中包含逗号,则基本上需要删除所有分号。
这很容易用下面的perl一行代码
完成perl -i -pe 's/;//g if /,/' file.txt
解释:
交换机:
-
-i[extension]
:在适当的位置编辑<>
文件(如果提供扩展名则进行备份) -
-p
:为每一行创建一个while(<>){...; print}
循环;在输入文件中。 -
-e
:告诉perl
在命令行上执行代码。
:
-
s/;//g
:删除行中所有分号 -
if /,/
:仅当行包含逗号 时