bash(cygwin)を介してKeePassにインポートできるように、テキストファイル(各ユーザー名とパスワードのペアを含む)をCSVに変換するにはどうすればよいですか?

bash(cygwin)を介してKeePassにインポートできるように、テキストファイル(各ユーザー名とパスワードのペアを含む)をCSVに変換するにはどうすればよいですか?

使いたいパスを維持する(win10x64).

問題は、これが長年にわたって私のパスワードを収集した方法です。
各ユーザー名とパスワードのペアは別々のテキストファイルにあり、ファイル名は関連するパスワード
のドメイン名であり、
各.txtファイルの最初の行は次のとおりです。ユーザー名と2番目のパスワード(プレフィックスなし)

たとえば、

ファイル名:(. reddit.com txt拡張子もありますが省略可能)内容:

my_username  
my_Password


上記をCSVにするには、次のように変換する必要があります。

"Account","Login Name","Password","Web Site", "Notes"
"Entry 1","my_username","my_password","http://reddit.com", ""

つまり

"Account","Login Name",  "Password",    "Web Site",          "Notes"
"Entry 1","my_username", "my_password", "http://reddit.com", ""

注:パスワードにカンマ(,)、二重引用符(")、またはバックスラッシュ()がある場合は、バックスラッシュにエスケープする必要があります。\

bashスクリプト(cygwin)を使ってこれをどのように実行できますか?


これまでに収集したコードは次のとおりです。

  1. ファイルの各行の先頭に文字列を追加するには?源泉)

    awk '{print "prefix" $0}' file
    
  2. file.txtのn行目を印刷してください。源泉)

    awk "NR==2{print;exit}" file.txt                // for printing the 2nd line
    
  3. 見つかったすべてのファイルに対してコマンドを繰り返し実行します。

    find . -name "*.txt" -execdir *command*
    

    または代替的に

    for file in /cygdrive/c/folder/*; do 
         *command*                    // command example:   mv "$file" "${file}/.."   
    done
    


したがって、私のスクリプトは次のように起動する必要があります。

find . -name "*.txt" -execdir        awk '{print '"Account","Account","Login Name","Password","Web Site", "Notes"' $0}' "$file"

私はこの時点で詰まった。

ベストアンサー1

入力ファイル:

  1. Yahoo.net.txt
  2. google.com.txt
  3. reddit.com.txt

コンテンツyahoo.net.txt:

user1-yaho0
pas,,

コンテンツgougle.com.txt:

user1-google
pas"wor,d

コンテンツreddit.com.txt:

user1-reddit
pas\wor\d

この入力を使用すると、次のような高速で汚れたスクリプトがアクションを実行します。

#!/bin/bash

echo "\"Account\",\"Login Name\",\"Password\",\"Web Site\",\"Notes\"" > output.csv
num=0
for f in `find . -type f -name '*.txt'` ; do

num=$((num + 1))
user=`head -1 "$f"`
password=`sed 1d "$f" | sed -r 's/([\\,"])/\\\\\1/g'`
domain=`basename "$f" | sed 's/\.txt$//'`

echo "\"$num\",\"$user\",\"$password\",\"$domain\",\"\"" >> output.csv

done

コンテンツoutput.csv:

"Account","Login Name","Password","Web Site","Notes"
"1","user1-reddit","pas\\wor\\d","reddit.com",""
"2","user1-yaho","pas\,\,","yahoo.net",""
"3","user1-google","pas\"wor\,d","gougle.com",""

おすすめ記事