use*_*437 7 linux text-processing replace tr
我正在尝试获取所有出现的 #,如果它们是连续的,则只用一个 # 替换它们。
例如
ab ### cde fghi## jklm
Run Code Online (Sandbox Code Playgroud)
会成为:
ab # cde, fghi# jklm
Run Code Online (Sandbox Code Playgroud)
我最初的目标是用 # so 替换所有连续的数字;120 -> # 和 3->#。但是我发现 120->###。所以现在我留下了这个新问题。
jes*_*e_b 20
使用tr -s
:
$ echo 'ab ### cde fghi## jklm' | tr -s '#'
ab # cde fghi# jklm
Run Code Online (Sandbox Code Playgroud)
-s
将输入中最后一个操作数(string1 或 string2)中列出的多个字符压缩到单个字符实例中。这是在所有删除和翻译完成后发生的。
您原来的问题可以通过以下方式解决:
sed -E 's/[0-9]+/#/g'
Run Code Online (Sandbox Code Playgroud)
或者POSIXly:
sed 's/[[:digit:]]\{1,\}/#/g'
Run Code Online (Sandbox Code Playgroud)
或者:
tr -s '[:digit:]' '[#*]'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
375 次 |
最近记录: |