我想打印"发现"只要在使用sed。
的文件中找到带有Initial Capital字母的单词我尝试过以下方法
s/\b[A-Z]\w*\s*/FOUND/g
/FOUND/d
但它不起作用。它只是用Found替换每个单词。
请告诉我我哪里错了
答案 0 :(得分:2)
打印FOUND以获取
中的首字母开头字sed -e 's/^/ /;/[^[:alnum:]_-][A-Z]/ !d' -e 's/.*/FOUND: &/' YourFile
[^[:alnum:]_-]
以指定自动化为单词起始边缘的内容(此处不是数字,字母,-
和_
,因此;
可用且{找到{1}} ;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
是不必要的