linux - 在 bash 的每一行中查找连续的空格分隔的单个字符

标签 linux bash perl awk sed

假设我有以下文件

Y M C A
cambridge m a
d m v office
t mobile

并想将其转换为

YMCA
cambridge ma
dmv office
t mobile

即检测所有连续的单个字符后跟不同长度(大于两个)的单个空格。例如,项目'd m v office',我们应该检测'd m v'并将其转换为'dmv',但会完整保留't mobile store'(只有一个单个字符)。
是否可以在 bash 中执行此操作,或者我必须使用 python 之类的程序来执行此操作?

最佳答案

Perl 单行代码:

echo 'Y M C A' | perl -ple's/\b\w\K\s(?=\w\b)//g'
==> YMCA

echo 't mobile' | perl -ple's/\b\w\K\s(?=\w\b)//g'
==> t mobile

这会在被单个单词字符包围时替换空格。如果您更方便,可以将 \w 替换为 [a-zA-Z]

关于linux - 在 bash 的每一行中查找连续的空格分隔的单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072719/

相关文章:

Perl - 从 arrayref 中删除不需要的元素

regex - 查找文本并将其替换为斜杠字符

linux - 我写的 Gem 在 Linux 上不能执行,但似乎可以在 Windows 上运行

c - linux服务器上的编译错误(C项目)

bash - 修改文本文件的确切行号并在行尾后添加特定字符串

arrays - 在 Bash 中如何将目录列表存储到数组中(然后将它们打印出来)?

c - 如何使我的 Linux C 程序可以从 bash 访问

linux - execv() 和 fork() 的时间浪费

linux - 文件开头的 #!/usr/bin/... 是什么意思?

perl - 保持特定位数的简单 Perl 数学