我已经阅读了下面的内容,并尝试重写我想要的命令逻辑。 但是,我只是无法做到。
在bash中删除长度小于2的单词
试过: echo $example | sed -e 's/ [a-zA-Z0-9]\{4\} / /g'
echo $example | sed -e 's/ [a-zA-Z0-9]\{4\} / /g'
使用sed删除所有大于6个字符的单词
试过: sed -e s'/[A-Za-z]\{,4\}//g'
请帮助我一个简单的awk
或sed
命令以下内容:
Here is an example line of fantastic data
并得到:
Here example line fantastic data
$ echo Here is an example line of fantastic data | sed -E 's/\b\(\w\)\{,3\}\b\s*//g' Here is an example line of fantastic data
如果将句子存储在变量中,则可以在for循环中遍历它。 然后你可以评估每个单词是否大于2个字符。
sentence="Here is an example line of fantastic data"; for word in $sentence; do if [ ${#word} -gt 2]; then echo -n $word; echo -n " "; fi done
这是一个BASH的例子,如果你在一个文件中有很多句子是最常见的情况下呢?
#!/bin/bash while read line do echo "$line" | sed -E 's/\b\w{1,2}\b//g' done < <( cat sentences.txt )
$ cat sentences.txt Edgar Allan Poe (January 19, 1809 to October 7, 1849) was an American writer, poet, critic and editor best known for evocative short stories and poems that captured the imagination and interest of readers around the world. His imaginative storytelling and tales of mystery and horror gave birth to the modern detective story. Many of Poe's works, including “The Tell-Tale Heart” and “The Fall of the House of Usher,” became literary classics. Some aspects of Poe's life, like his literature, is shrouded in mystery, and the lines between fact and fiction have been blurred substantially since his death.
$ ./grep_tests.sh Edgar Allan Poe (January , 1809 October , 1849) was American writer, poet, critic and editor best known for evocative short stories and poems that captured the imagination and interest readers around the world. His imaginative storytelling and tales mystery and horror gave birth the modern detective story. Many Poe' works, including “The Tell-Tale Heart” and “The Fall the House Usher,” became literary classics. Some aspects Poe' life, like his literature, shrouded mystery, and the lines between fact and fiction have been blurred substantially since his death.