ファイルの残りの行を別のファイルにコピーする方法

ファイルの残りの行を別のファイルにコピーする方法

xyz1行に対応する文字列があり、それに続くすべての行を新しいファイルにコピーfile1.txtしたいと思います。この目標をどのように達成できますか?xyzfile1.txtfile2.txt

私はcatコマンドを知っています。ところで、出発船をどのように指定しますか?

ベストアンサー1

GNU sedの使用

すべての行をコピー後ろに xyz、努力する:

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

1,/xyz/最初の行で始まり、最初の一致で終わる行の範囲を指定しますxyzdsedにこの行を削除するように指示してください。

メモ:BSD / MacOSでは、sedは機能しますsed '1,/xyz/d' file1.txt >file2.txtが、最初の項目がxyz2行目以上にある場合にのみ機能します。 (帽子のヒント:先行.)

提案された別のアプローチドンクリスティ、次に適用する必要があります。みんな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 に指示します。

おすすめ記事