我需要一些帮助来删除某些文件中第 1 行(并且只有第 1 行)的第二次匹配之后(包括)该行的其余部分。例如,如果模式是星号*
:
输入:
asd*asd*asd*asd*asd*
asdasdasd*asdasdasd*asdasdasd*asdasdasd
预期输出:
asd*asd
asdasdasd*asdasdasd*asdasdasd*asdasdasd
谢谢!
这可能对您有用(GNU sed):
sed '1s/\*[^*]*//2g' file
要将操作限制为一行,请使用“地址”:
sed '1s/\([^*]\*[^*]*\).*/\1/'
一种awk
解决方案:
awk '
BEGIN { FS = OFS = "*" }
FNR == 1 {
print $1, $2
}
FNR > 1 {
print
}
' infile
这会产生:
asd*asd
asdasdasd*asdasdasd*asdasdasd*asdasdasd