Saya mencari jalur kontak jauh berdasarkan jalur berikutnya. Sejauh ini satu-satunya cara yang saya lihat adalah membuat skrip shell yang akan membaca baris demi baris dan akan melakukan sesuatu di sepanjang baris ini:
while read line
if $line does not start with "," and $curr_line is empty
store line in curr_line
if $line does not start with "," and $curr_line is not empty
flush $curr_line to file
store $line in $curr_line
if $line starts with "," append to $curr_file, flush to file empty curr_line
done < file
Jadi saya mencoba memahami apakah dapat dicapai dengan sed atau bahkan grep dengan pengalihan.
aturan filenya sederhana.
Ada maksimal satu dan hanya satu baris yang dimulai dengan "," yang perlu untuk ditambahkan ke baris sebelumnya.
contoh:
line0
line1
line2,line3
line4
line5,line6
line7,line8
line9
line10
line11
File hasil akan menjadi
line0
line1
line2,line3
line4
line5,line6
line7,line8
line9
line10
line11
Jawaban yang Diterima:
Saya akan melakukan:
awk -v ORS= '
NR>1 && !/,/ {print "n"}
{print}
END {if (NR) print "n"}' < file
Artinya, hanya mencetak karakter baris baru yang membatasi baris sebelumnya jika yang sekarang tidak dimulai dengan ,
.
Bagaimanapun, saya tidak akan menggunakan while read
lingkaran.