我需要一些幫助,在某些文件中刪除行(包括)行1(僅行1)的第二個匹配之後的其餘行。例如,如果模式將是一個星號*
:awk/sed:在第二次匹配後刪除行的剩餘部分
輸入:
asd*asd*asd*asd*asd*
asdasdasd*asdasdasd*asdasdasd*asdasdasd
預期輸出:
asd*asd
asdasdasd*asdasdasd*asdasdasd*asdasdasd
謝謝!
我需要一些幫助,在某些文件中刪除行(包括)行1(僅行1)的第二個匹配之後的其餘行。例如,如果模式將是一個星號*
:awk/sed:在第二次匹配後刪除行的剩餘部分
輸入:
asd*asd*asd*asd*asd*
asdasdasd*asdasdasd*asdasdasd*asdasdasd
預期輸出:
asd*asd
asdasdasd*asdasdasd*asdasdasd*asdasdasd
謝謝!
一個awk
解決方案:
awk '
BEGIN { FS = OFS = "*" }
FNR == 1 {
print $1, $2
}
FNR > 1 {
print
}
' infile
國債收益率:
asd*asd
asdasdasd*asdasdasd*asdasdasd*asdasdasd
要限制操作線,使用 「地址」:
sed '1s/\([^*]\*[^*]*\).*/\1/'
這可能適用於你(GNU sed):
sed '1s/\*[^*]*//2g' file
注意:使用'2g'生成未指定行爲,所以不要依賴於其他sed實現。 –
N.B. @WilliamPursell我確實指定了GNU sed。 – potong
謝謝!它的效果很好。我只是害怕我的例子並不能很好地代表我的數據。如果我想要該模式成爲選項卡,該怎麼辦? 不知何故,當我用\ t替換方括號內的星號不工作時... sed'1s/\([^ \ t] \ * [^ \ t] * \)。*/\ 1 /' – afrendeiro
'sed'無法表示選項卡。您可以使用bash的引用來幫助它:'sed $'1s/\([^ \ t] \ t [^ \ t] * \)。*/\\ 1 /'' – choroba