将文件名作为参数,脚本读取文件名并创建一个仅包含一个单词的行的新文件。
示例输入和输出将是
There are 20 students in the class. [TAB][SPACE] Nearly half of them are enrolled in FoS. The rest are in Faculty-Of-ES.
脚本的输出应该类似于
There [TAB][SPACE] Nearly Faculty-Of-ES.
你好,我是一名初学程序员,我正在尝试学习bash脚本超过一个月,但这样的问题仍然让我感到困惑。 请概述一般方法。谢谢你
答案 0 :(得分:2)
grep -P "^[\s]*[0-9A-Za-z-]+.?[\s]*$" test.txt
test.txt
包含输入文字。
在这里,我将一个单词定义为在开头和结尾有零或更多空白。然后字母,数字和-
以及的任意组合,可选择以句点结尾。
注意:: 如果您将浮点数视为单词,则无效。因此,您对word
的定义定义了结果和正则表达式。
答案 1 :(得分:1)
可能是最简单的方法:awk 'NF==1' filename
答案 2 :(得分:0)
代码:cat $1 | egrep "^\s*\w+\s*$" > output.txt
。
<强>说明强>:
$1..$9
引用程序获得的变量,因此如果您运行程序$ > myprogram filename.txt
,则$1
将为filename.txt
2.您可以使用cat filename
阅读文件的内容。您可以使用|
(管道符号)将文件内容传递到下一行代码。
您可以使用egrep
程序仅显示正则表达式匹配的行。
只能获得一个字线的正则表达式可能是:^\s*\w+\s*$
。其中读取:在行的开头可以有零个或多个空格(\ s - 空格,*为零或更多,^是行的开头)。那么一个或多个字符(\ w是字母,数字和下划线,+是一个或多个)。那么零个或多个空格然后必须是该行的结尾。这意味着这个正则表达式不会显示“某事物”这一行,因为它期望空格后面的行结束,而不是更多的单词。
您可以使用重定向将{egrep>的输出重定向到文件:> filename
。