Saya bekerja dengan .csv
output dari kueri data SE ini yang terlihat seperti ini (hanya dengan 5022 entri):
"{
""id"": 281952,
""title"": ""Flash 11.2 No Longer Supported by Google Play""
}"
"{
""id"": 281993,
""title"": ""Netbeans won't open in Ubuntu""
}"
(Dan itu memiliki ^M
ujung garis antara [angka], dan "" judul ""). Saya perlu terlihat seperti ini:
281952,Flash 11.2 No Longer Supported by Google Play
281993,Netbeans won't open in Ubuntu
Saya memperbaikinya dalam editor teks tertentu yang akan tetap tanpa nama dengan mudah, tetapi saya ingin membuat skrip sehingga saya tidak perlu melakukannya lagi setiap kali kueri disegarkan & agar orang lain dapat menggunakannya. Saya menggunakan sed
...
Rangkaian perintah ini bekerja dengan sempurna (meskipun mungkin tidak efisien; ini hanya solusi coba-coba):
# Print the ^M and remove them, write to a new file:
cat -v QueryR* | sed 's/\^M//' > QueryNew
# remove all the other junk:
sed -i 's/{//' QueryNew
sed -i 's/}//' QueryNew
sed -i 's/""//g' QueryNew
sed -i 's/^"//' QueryNew
sed -i '/,/{N;/\n.*title:\s/{s/,\n.*title:\s/,\ /}}' QueryNew
sed -i 's/^\s\+//' QueryNew
sed -i '/^\s*$/d' QueryNew
sed -i 's/^id:\ //' QueryNew
sed -i 's/,\ /,/' QueryNew
sed -i 's/\\//g' QueryNew
Jadi, mengapa ini tidak dilakukan? Hanya ^M
dan {}
dihapus, dan segala sesuatu yang lain masih ada.
#!/bin/bash
cat -v QueryR* | sed 's/\^M//' > QueryNew
sed -i '{
s/{//
s/}//
s/""//g
s/^"//
/,/{N;/\n.*title:\s/{s/,\n.*title:\s/,\ /}}
s/^\s\+//
/^\s*$/d
s/^id:\ //
s/,\ /,/
s/\\//g
}' QueryNew
Saya yakin kesalahan saya sangat jelas ...
\r
.jq
putus pada baris pertama di mana bidang judul memiliki titik dua (baris pertama). Saya masih tidak yakin mengapased
membenci saya, tetapi saya membunuh beberapa kutipan dan\r
di baris ini/,\r*/{N;/\n.*title.*:\s/{s/,\r*\n.*title.*:\s/,\ /}}
dan akhirnya berfungsi seperti ini . Terima kasih banyak ^ _ ^