2014-03-28 91 views
-1

嗨,我正在学习sed,我想解决我的一个练习。它说我需要删除包含一个或多个大写字母的行中的任何单词。删除包含一个或多个大写字母的单词

示例输入:

Hi im NEW here need help NOw 

输出:

im here need help 
+0

什么是你的工作这么远? – Selcuk

+0

我知道如何删除只包含所有大写字母的单词,但不是这样的...... – user3473968

+0

向我们展示您的代码,了解如何删除具有所有大写字母的单词,并使我们可以从此处获得帮助。 – Adam

回答

1

这里有一个办法:

echo Hi im NEW here need help NOw | xargs -n1 | sed '/[A-Z]/d' | xargs 
im here need help 
+0

+1哈哈 - 辉煌! =无论如何,这不是一个纯粹的sed ...但真的很好:) – jm666

+0

谢谢你的答案 – user3473968

0

这应该做:

echo "Hi im NEW here need help NOw" | awk '{for (i=1;i<=NF;i++) if ($i!~/[[:upper:]]/) printf "%s ",$i;print""}' 
im here need help 

此测试一个和一个字段。打印所有字段不包含任何大写字母。

+1

问题在于提问的问题写在sed – user3473968

+0

@ user3473968 Mark的回应不仅是'sed'。不是所有的东西都可以通过'sed'或者单个命令轻松解决。 – Jotne

1

这里是一个办法做到这一点在sed

$ echo "Hi im NEW here need help NOw" | sed -r ':a;s/[a-z]*[A-Z]+[a-z]* *//;ta' 
im here need help 
+1

+1纯sed解决方案;也适用于包含'''字符的标记。 – mklement0

+0

谢谢@ mklement0。不是我喜欢的首选工具,但我喜欢它有时提供的挑战。 ':)'。 –

+1

它很好用。 – user3473968

相关问题