删除包含特定字符但不在末尾但在BASH中开始的行

时间:2017-11-08 00:55:32

标签: bash

我需要删除包含“+”的文件行,但前提是它包含在文本中,这意味着如果它位于开头或结尾,则不得删除。

文件:

Hello
World
gol+d
fi+sh
+foo
bar+

输出:

Hello
World
+foo
bar+

我尝试过使用sed'/ - / d',但这会删除旁边带有“+”的所有单词,并在中间留下“+”,与我的预期结果相反。< / p>

尝试找到问题的最快解决方案。这可以使用grep或sed来完成,但任何解决方案都会非常感谢。

2 个答案:

答案 0 :(得分:3)

... handleFiltering(filterType, list) { list = list || this.state.list; const filterTypes = { allTasks: () => list, yourTasks: () => (list.filter(item => item.assignedTo === this.userId)), assignedTasks: () => (list.filter(item => item.createdBy === this.userId)), } this.setState(() => { return { filteredList: filterTypes[filterType]() } }); } ... 的这些简单3条件可能对您有所帮助。

class foo:
    def __init__(self,p1,p2):
        self.a1 = p1
        self.a2 = p2

    def __eq__(self, other):
        return self.__dict__ == other.__dict__


def main():
    o1=foo("lucy","jack")
    o2=foo('lucy','jack')
    print(o1==o2)
main()

说明: 通过执行awk检查是否有任何行从awk '/^+/ || /+$/ || !/+/' Input_file 开始或任何行以+结尾执行/^+/或任何行没有+ +$然后+中没有提到任何操作,因此默认打印当前行将会发生(这将打印当前行)线)。

输出如下。

!/+/

答案 1 :(得分:2)

perl -ne 'print if not /^.+\+.+$/' input_file

测试

perl -ne 'print if not /^.+\+.+$/' input_file >output_file

创建输出文件

perl -ni -e 'print if not /^.+\+.+$/' file

让perl将文件固定到位

-n告诉perl不要打印该行,除非你告诉它。正则表达式为^行的开头,.+任意一个或多个字符,\+文字+,$行尾。您可能希望将.中的.+替换为更具体的字符,例如“任何字母数字字符”或更符合您要求的内容。你可以谷歌perl特殊字符。

sed对此更容易,但我老实说不知道怎么做而不留空白。