GNU/Linux >> Belajar Linux >  >> Linux

Ganti Baris Dengan Konten Lain Menggunakan Sed Dan Paralel Untuk File Besar?

Saya memiliki file besar (50G) dan saya ingin mengganti baris yang dimulai dengan konten variabel $i dengan isi variabel $newline menggunakan parallel perintah.

Skrip saya diberikan di bawah

#!/bin/sh 
File="test.txt"
i="foo"
newline="helooooooo"

parallel -a $File -k --block 30M --pipe-part 'sed -i /^$i/d' $File
echo $newline >> $File 

Ini tidak bekerja untuk saya, hanya menghapus baris saja.

Jawaban yang Diterima:

Saya rasa masalah Anda ada di sini:

'sed -i /^$i/d'

Coba ini:

"sed -i /^$i/d"

Variabel $i tidak dapat diperluas karena dibungkus dengan tanda kutip tunggal, mengalihkannya ke tanda kutip ganda memungkinkan Bash untuk memperluasnya dengan variabel Anda $i .


Linux
  1. Bagaimana melakukan sed like text ganti dengan python?

  2. Menggunakan grep dan sed untuk mencari dan mengganti string

  3. Temukan dan ganti dengan sed di direktori dan sub direktori

  1. Bagaimana cara mengganti tanda kutip tunggal dengan karakter lain di sed?

  2. Bagaimana cara mengganti file di jar dengan baris perintah di linux?

  3. Menggunakan sed untuk mengganti antara pola tertentu

  1. Ganti Rentang Garis Dengan Rentang Garis (sed Atau Lainnya)?

  2. Ganti Garis yang Mencocokkan Pola Dengan Garis Dari File Lain Secara Berurutan?

  3. Encode Konten File Dan Gema Sebagai Satu Baris?