1

我需要一些帮助来删除某些文件中第 1 行(并且只有第 1 行)的第二次匹配之后(包括)该行的其余部分。例如,如果模式是星号*

输入:

asd*asd*asd*asd*asd*
asdasdasd*asdasdasd*asdasdasd*asdasdasd

预期输出:

asd*asd
asdasdasd*asdasdasd*asdasdasd*asdasdasd

谢谢!

4

3 回答 3

2

这可能对您有用(GNU sed):

sed '1s/\*[^*]*//2g' file
于 2012-08-29T09:42:07.403 回答
2

要将操作限制为一行,请使用“地址”:

sed '1s/\([^*]\*[^*]*\).*/\1/'
于 2012-08-29T08:13:44.810 回答
2

一种awk解决方案:

awk '
    BEGIN { FS = OFS = "*" } 
    FNR == 1 { 
        print $1, $2 
    } 
    FNR > 1 { 
        print 
    }
' infile

这会产生:

asd*asd
asdasdasd*asdasdasd*asdasdasd*asdasdasd
于 2012-08-29T08:21:52.250 回答