我试图弄清楚使用linux的文件中每个单词出现的次数。
我已使用下面的代码将文件中的每个单词放到新行上。
sed -i 's/ /\n/g' books2
我现在正试图用空格替换单词的开头和结尾,因为有些单词包含标点符号。我目前正在使用以下代码执行此操作,但它似乎不起作用。一旦我有了这个,我将能够运行一个命令来计算所有单词并返回所有单词的计数列表。有人可以纠正我如何删除标点符号?
sed -i 's/\([^[:alpha:]]\)$//' books2 #this is my attempt to remove the punctuality at the end of the word
sed -i 's/\([^[:alpha:]]\)^.*//' books2 #this is my attempt to remove the punctuality from the front.
当我运行上面的任何一行代码时,我的文件变为空。为什么是这样?
答案 0 :(得分:1)
要从行的开头删除标点符号,可以使用以下命令:
sed 's/^[^[:alpha:]]\+//' books2
这将删除行开头的每个非字母字符。它还匹配多个实例,而您的示例只匹配一个实例。
要从行尾删除标点符号,可以使用以下命令:
sed 's/[^[:alpha:]]\+$//' books2
如果单词中没有拼写,您也可以运行:
sed 's/[^[:alpha:]]\+//' books2
删除一个命令中的所有非字母字符。