如何使用sed查找大写字母的单词

时间:2015-09-17 09:41:14

标签: sed

我想打印"发现"只要在使用sed。

的文件中找到带有Initial Capital字母的单词

我尝试过以下方法

s/\b[A-Z]\w*\s*/FOUND/g
/FOUND/d

但它不起作用。它只是用Found替换每个单词。

请告诉我我哪里错了

3 个答案:

答案 0 :(得分:2)

打印FOUND以获取

中的首字母开头字
sed -e 's/^/ /;/[^[:alnum:]_-][A-Z]/ !d' -e 's/.*/FOUND: &/' YourFile
  • 调整课程[^[:alnum:]_-]以指定自动化为单词起始边缘的内容(此处不是数字,字母,-_,因此;可用且{找到{1}}
  • 将secont部分(第二个;Ok动作)改为你想要的任何一行(这里它用-e替换所有行)

打印FOUND代替每个大写字母

FOUND

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed '/\n/!s/\b[[:upper:]]\S*/\nFOUND\n/g;/^FOUND/P;D' file

将以大写字母开头的每个单词替换为\nFOUND\n(每行只执行一次,因此不匹配\n)并仅打印那些以FOUND开头的字符串缩小行直到它是空的。然后在下一行重复等。

答案 2 :(得分:-1)

文件:

Hi there

My Name is Ian
and I am Have no Worries 

将文件拆分为单词,用Found替换以大写字母开头的每个单词,然后打印出所有Found个,而忽略其余部分:

sed 's/ /\n/g' file | sed 's/^[A-Z].*/Found/;/^Found/ !d'

编辑:感谢NeronLeVelu指出cat并且grep是不必要的