私は働いている.csv
の出力このSEデータクエリ(のみ5022のエントリで)次のようになります。
"{
""id"": 281952,
""title"": ""Flash 11.2 No Longer Supported by Google Play""
}"
"{
""id"": 281993,
""title"": ""Netbeans won't open in Ubuntu""
}"
(そして^M
、[number]と "" title ""の間に行末があります)。次のようにする必要があります。
281952,Flash 11.2 No Longer Supported by Google Play
281993,Netbeans won't open in Ubuntu
これを特定のテキストエディターで修正しましたが、これは非常に簡単に無名のままですが、クエリを更新するたびに再度実行する必要がなく、他のユーザーが使用できるように、スクリプトを作成したいと思いました。私が使ったsed
...
この一連のコマンドは完全に機能します(ただし、効率が悪い場合があります。これは試行錯誤による解決策にすぎません)。
# 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
それで、なぜこれはありませんか?だけ^M
とは{}
削除されます、そして他のすべてはまだそこにあります。
#!/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
私の間違いは本当に明らかだと思います...
\r
たのか。jq
タイトルフィールドにコロンが付いた最初の行(最初の行)で壊れました。なぜsed
私が嫌いなのかはまだわかりませんが、引用符の一部を削除し\r
ました。この行で/,\r*/{N;/\n.*title.*:\s/{s/,\r*\n.*title.*:\s/,\ /}}
、最終的にはこのように機能します。どうもありがとう^ _ ^