我想刪除與第一行匹配的文件的每一行,但不刪除第一行。如何刪除與第一行匹配的文件中的每一行
到目前爲止,我已經試過這段代碼,但它刪除了包括第一行的所有匹配模式。
sed -i "1,/$VARIABLE_CONTAINING_PATTERN/d" $MY_FILE.txt
我想刪除與第一行匹配的文件的每一行,但不刪除第一行。如何刪除與第一行匹配的文件中的每一行
到目前爲止,我已經試過這段代碼,但它刪除了包括第一行的所有匹配模式。
sed -i "1,/$VARIABLE_CONTAINING_PATTERN/d" $MY_FILE.txt
使用awk。解決方案取決於你的一個比賽定義了一下:
$ cat file
1
2
3
1
12
$ awk 'NR==1{p=$0;print;next} p $0 != p' file
1
2
3
12
$ awk 'NR==1{p=$0;print;next} $0 !~ p' file
1
2
3
因此,你應該提供適當的樣本數據與預期輸出。
按照你的描述字面上 - 刪除第一行相匹配的文件的每一行,但不能刪除第一行,AWK解決方案:
比方說,我們有以下myfile.txt
:
my pattern
some text
another pattern
regex
awk sed
my pattern
text text
my pattern
our patterns
awk 'NR==1{ pat=$0; print }NR>1 && $0!~pat' myfile.txt > tmp && mv tmp myfile.txt
最終myfile.txt
內容:
my pattern
some text
another pattern
regex
awk sed
text text
our patterns
這可能爲你工作(GNU SED):
sed -i '1h;1!G;/^\(.*\)\n\1$/!P;d' file
複製的第一行進入貨艙空間(HS)。對於除第一行以外的每一行,將HS附加到模式空間(PS)。將當前行與第一行進行比較,如果不相同,則打印當前行。刪除模式空間。
是否要刪除帶有$ VARIABLE_CONTAINING_PATTERN模式的行或與文件第一行匹配的行? – whoan
與我的文件的第一行匹配的行 – Username
在這種情況下,您可以嘗試使用'sed -i「/ $ VARIABLE_CONTAINING_PATTERN/{1!d}」$ MY_FILE.txt' – paul