仅删除特定字符之前的白色 space。带有自由办公室正则表达式引擎
Only remove white space which precedes a specific character. with libre office regex engine
我正在尝试在 Libre Office 的正则表达式引擎中执行此操作并在 ubuntu 终端中执行此操作。
1.Example 字符串:
-Polizeiwache (f)police station
-Freibad (n)open-air swimming pool
2.Desired 输出:
-Polizeiwache (f)policestation
-Freibad (n)open-airswimmingpool
我一直在尝试 select 字符 )
并用任何内容替换每个后续的 space。
感谢任何帮助。
你可以试试这个:
sed -i.bak 's/\()[^ ]*\) //g' yourfile
图案详情:
\( # open the capture group 1
) # a literal closing parenthesis
[^ ]* # zero or more (*) characters that are not a space [^ ]
\) # close the capture group 1
# a space (do you see it?)
</code> 是对捕获组 1 的反向引用,显然它包含该组中所有已匹配的内容。由于 space 不在组中,因此将其删除。</p>
<p><code>g
代表全球研究
您试图完成的事情尚不清楚。您的文字显示 "replace every",但您的示例显示仅替换第一个 space。替换每个:
sed 'h;s/[^)]*//;s/ //g;x;s/).*//;G;s/\n//'
这是做什么的:
h
将行复制到 sed 的保留 space
s/[^)]*//
替换 not-a-) 没有重复。这将删除该行的第一部分。
s/ //g
空空如也。 g
选项表示每次出现都执行。现在我们有了我们想要的第二部分。
x
交换持有 space 和模式(工作)space。现在我们又在模式 space 中有了整行。
s/).*//
替换 ) 后跟任何字符序列。现在我们有了该行的第一部分。
G
追加保留 space。现在我们重新加入了整行(编辑的第二部分),用换行符分隔。
s/\n//
去掉中间的换行符。
这是一个awk
awk -F\) '{gsub(/ /,"",$NF)}1' OFS=\) file
-Polizeiwache (f)policestation
-Freibad (n)open-airswimmingpool
它将 )
设置为字段分隔符,然后从最后一个字段中删除 space。
或者,如果您只想先更改 space,请使用 sub
而不是 gsub
:
awk -F\) '{sub(/ /,"",$NF)}1' OFS=\) file
-Polizeiwache (f)policestation
-Freibad (n)open-airswimming pool
我正在尝试在 Libre Office 的正则表达式引擎中执行此操作并在 ubuntu 终端中执行此操作。
1.Example 字符串:
-Polizeiwache (f)police station
-Freibad (n)open-air swimming pool
2.Desired 输出:
-Polizeiwache (f)policestation
-Freibad (n)open-airswimmingpool
我一直在尝试 select 字符 )
并用任何内容替换每个后续的 space。
感谢任何帮助。
你可以试试这个:
sed -i.bak 's/\()[^ ]*\) //g' yourfile
图案详情:
\( # open the capture group 1
) # a literal closing parenthesis
[^ ]* # zero or more (*) characters that are not a space [^ ]
\) # close the capture group 1
# a space (do you see it?)
</code> 是对捕获组 1 的反向引用,显然它包含该组中所有已匹配的内容。由于 space 不在组中,因此将其删除。</p>
<p><code>g
代表全球研究
您试图完成的事情尚不清楚。您的文字显示 "replace every",但您的示例显示仅替换第一个 space。替换每个:
sed 'h;s/[^)]*//;s/ //g;x;s/).*//;G;s/\n//'
这是做什么的:
h
将行复制到 sed 的保留 spaces/[^)]*//
替换 not-a-) 没有重复。这将删除该行的第一部分。s/ //g
空空如也。g
选项表示每次出现都执行。现在我们有了我们想要的第二部分。x
交换持有 space 和模式(工作)space。现在我们又在模式 space 中有了整行。s/).*//
替换 ) 后跟任何字符序列。现在我们有了该行的第一部分。G
追加保留 space。现在我们重新加入了整行(编辑的第二部分),用换行符分隔。s/\n//
去掉中间的换行符。
这是一个awk
awk -F\) '{gsub(/ /,"",$NF)}1' OFS=\) file
-Polizeiwache (f)policestation
-Freibad (n)open-airswimmingpool
它将 )
设置为字段分隔符,然后从最后一个字段中删除 space。
或者,如果您只想先更改 space,请使用 sub
而不是 gsub
:
awk -F\) '{sub(/ /,"",$NF)}1' OFS=\) file
-Polizeiwache (f)policestation
-Freibad (n)open-airswimming pool