删除字符串中除 'a' 'i' 和 'o' 之外的所有单字符单词
Remove all one character words in string EXCEPT 'a' 'i' and 'o'
我正在尝试解析一个删除了单引号的文件,留下一些随机的 ''s 之类的东西。
到目前为止我已经尝试过:
echo "a b c d e f g h i o omgifack" | grep -o '[^bcdefghjklmnpqrstuvBCDEFGHJKLMNPQRSTUV]\{2,\}'
echo "a b c d e f g h i o omgifack" | tr -d '[bcdefghjklmnpqrstuvwxyzBCDEFGHJKLMNPQRSTUVWXYZ]'
我的示例基于:
echo "a b c d e f g h i o omgifack" | grep -o '[a-z]\{2,\}'
期望的输出:
>a i o omgifack
我似乎无法弄明白,但我确信我遗漏了一些明显的东西。开放使用 awk、sed、tr、grep 的解决方案……任何有效的方法。谢谢!
我可能会使用类似
的东西
echo "a b c d e f g h i o omgifack" | grep -wo '[[:alpha:]]\{2,\}\|[AIOaio]'
a
i
o
omgifack
这将隔离所有长度超过两个字母(即 [[:alpha:]]\{2,\}
部分)或 [AIOaio]
.[=18 之一的整个单词(因为 -w
) =]
请注意,如果文本包含变音符号或重音字符(例如 ä
、é
、ß
等),[[:alpha:]]
会包含那些当且仅当 grep 是运行 在将它们识别为字母表一部分的语言环境下。
这可能适合您 (GNU sed):
sed 's/\b[^aio ]\b \?//Ig' file
删除任何非 a
、i
或 u
(大写或小写)后跟可能的 space.
的单例字符
我正在尝试解析一个删除了单引号的文件,留下一些随机的 ''s 之类的东西。
到目前为止我已经尝试过:
echo "a b c d e f g h i o omgifack" | grep -o '[^bcdefghjklmnpqrstuvBCDEFGHJKLMNPQRSTUV]\{2,\}'
echo "a b c d e f g h i o omgifack" | tr -d '[bcdefghjklmnpqrstuvwxyzBCDEFGHJKLMNPQRSTUVWXYZ]'
我的示例基于:
echo "a b c d e f g h i o omgifack" | grep -o '[a-z]\{2,\}'
期望的输出:
>a i o omgifack
我似乎无法弄明白,但我确信我遗漏了一些明显的东西。开放使用 awk、sed、tr、grep 的解决方案……任何有效的方法。谢谢!
我可能会使用类似
的东西echo "a b c d e f g h i o omgifack" | grep -wo '[[:alpha:]]\{2,\}\|[AIOaio]'
a
i
o
omgifack
这将隔离所有长度超过两个字母(即 [[:alpha:]]\{2,\}
部分)或 [AIOaio]
.[=18 之一的整个单词(因为 -w
) =]
请注意,如果文本包含变音符号或重音字符(例如 ä
、é
、ß
等),[[:alpha:]]
会包含那些当且仅当 grep 是运行 在将它们识别为字母表一部分的语言环境下。
这可能适合您 (GNU sed):
sed 's/\b[^aio ]\b \?//Ig' file
删除任何非 a
、i
或 u
(大写或小写)后跟可能的 space.