使いたいパスを維持する(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)を使ってこれをどのように実行できますか?
これまでに収集したコードは次のとおりです。
ファイルの各行の先頭に文字列を追加するには? (源泉)
awk '{print "prefix" $0}' file
file.txtのn行目を印刷してください。 (源泉)
awk "NR==2{print;exit}" file.txt // for printing the 2nd line
見つかったすべてのファイルに対してコマンドを繰り返し実行します。
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
入力ファイル:
- Yahoo.net.txt
- google.com.txt
- 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",""