Files

如何將文件的其餘行複製到另一個文件

  • March 9, 2019

我有一個字元串xyz,它是一行file1.txt,我想將 in 之後xyz的所有行複製file1.txt到一個新文件file2.txt中。我怎樣才能做到這一點?

我知道cat命令。但是如何指定起跑線呢?

使用 GNU sed

要複製之後 xyz的所有行,請嘗試:

sed '0,/xyz/d' file1.txt >file2.txt

1,/xyz/指定從第一個匹配的第一個匹配項開始到第一個匹配項結束的行範圍xyzd告訴 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) 到匹配正則表達式的第一行的所有行xyz1告訴 awk 列印任何剩餘的行。

引用自:https://unix.stackexchange.com/questions/505388