簡體   English   中英

使用數組從txt創建json文件

[英]Create json files from txt using array

我有一個名為usernames.txt的輸入文件:

user1 group1 group2
user2 group1
user3

我需要做的是將每一行作為一個數組,並與第一個元素(用戶)一起創建一個名為user.json的文件。 然后,我需要將數組中剩余的元素用於用戶組。

輸出文件如下所示:

{
  "id": "user1",
  "groups": "group1, group2",
  "shell": "\/bin\/bash",
  "password": "!"
}

到目前為止,我有:

cat usernames.txt | tr ' \t' '\n\n' | while read user; do
    if test -f "$user.json"; then
       echo "Skipping \"$user\", it already exists"
    else
      arr=$user
      cat > ${arr[0]}.json << EOF
{
  "id": "${arr[0]}",
  "groups": "${arr[@]:1}",
  "shell": "\/b=in\/bash",
  "password": "!"
}
EOF
    fi
done  

我不確定如何處理組之間的逗號,但是我相信這不太困難。

目前正在獲得的輸出:

Skipping "group1", it already exists

group1.json group2.json user1.json user2.json user3.json

它正在為我不需要的組創建文件...

user1.json:

{
  "id": "user1",
  "groups": "ser1",
  "shell": "\/bin\/bash",
  "password": "!"
}

似乎每個數組元素都是字母而不是整個單詞? 我確定它與創建數組的方式有關,但是我不確定是否能做到這一點。

任何想法如何使它工作?

我不會嘗試回答您對以上評論的擔憂,因為它將永遠存在:

在下面的awk語句中亂七八糟:

awk '{print "{\n" "id" ": "$1",\n" "group: " $2 ",\nShell:  /bin/bash ,\n Password: \!,\n}\n"}' usernames.txt 
awk: cmd. line:1: warning: escape sequence `\!' treated as plain `!'
{
id: user1,
group: group1,
Shell:  /bin/bash ,
 Password: !,
}

{
id: user2,
group: group1,
Shell:  /bin/bash ,
 Password: !,
}

{
id: user3,
group: ,
Shell:  /bin/bash ,
 Password: !,
}

問題在於您陳述的問題:

我有一個名為usernames.txt的輸入文件:

user1 group1 group2
user2 group1
user3

我需要做的是將每一行作為一個數組,並與第一個元素(用戶)一起創建一個名為user.json的文件。 然后,我需要將數組中剩余的元素用於用戶組。

輸出文件應如下所示:

{
  "id": "user1",
  "groups": "group1, group2",
  "shell": "\/bin\/bash",
  "password": "!"
}

您的usernames.txt不包含shell或password字段,但結果卻包含,因此awk以上假設所有條目都將像您的示例一樣,而不是在username.txt中定義

您將需要四處打擾以添加“周圍字段”

在上一個示例中也沒有組,因此您可能希望添加if($ 2〜“”){不執行任何操作}

在awk語句中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM