Files
如何將文件的其餘行複製到另一個文件
我有一個字元串
xyz
,它是一行file1.txt
,我想將 in 之後xyz
的所有行複製file1.txt
到一個新文件file2.txt
中。我怎樣才能做到這一點?我知道
cat
命令。但是如何指定起跑線呢?
使用 GNU sed
要複製之後
xyz
的所有行,請嘗試:sed '0,/xyz/d' file1.txt >file2.txt
1,/xyz/
指定從第一個匹配的第一個匹配項開始到第一個匹配項結束的行範圍xyz
。d
告訴 sed 刪除這些行。**注意:**對於 BSD/MacOS sed,可以使用
sed '1,/xyz/d' file1.txt >file2.txt
,但這僅在第一次出現xyz
在第二行或更晚時才有效。(帽子提示:kusalananda。)don_crissti建議的另一種方法應該適用於所有sed:
{ printf %s\\n; cat file1.txt; } | sed '1,/xyz/d' >file2.txt
例子
考慮這個測試文件:
$ cat file1.txt a b xyz c d
執行我們的命令:
$ sed '1,/xyz/d' file1.txt >file2.txt $ cat file2.txt c d
使用 awk
awk 可以使用相同的邏輯:
awk 'NR==1,/xyz/{next} 1' file1.txt >file2.txt
NR==1,/xyz/{next}
告訴 awk 跳過從第一個 (NR==1
) 到匹配正則表達式的第一行的所有行xyz
。1
告訴 awk 列印任何剩餘的行。