Score:1

bash: วิธีสร้างคู่คีย์, ค่าจากไฟล์ .txt ใน linux

ธง cn
ว | awk 'NR==1 {พิมพ์ $1}' >file.txt
ไฟล์แมว
ผู้ใช้ TTY จากการเข้าสู่ระบบ @ IDLE JCPU PCPU คืออะไร
ลาวา1 pts/0 157.48.149.102 05:03 31.00s 0.31s 0.31s -bash
azureuse pts/1 157.48.149.102 07:26 0.00s 0.07s 0.05s w

จากไฟล์ข้อความด้านบน ฉันต้องการสร้างคู่คีย์,ค่า เช่น รูปแบบ json ดังด้านล่างคือ ผลลัพธ์ที่คาดหวัง:

{
 "ผู้ใช้" : "lava1",
 "TTY" : "คะแนน/1",
 "จาก" : "157.47.49.254",
 "เข้าสู่ระบบ" : "12:32",
 "ว่าง" : "5.00s"
}
cn flag
ในการทุบตี? ดู https://stackoverflow.com/questions/48470049/build-a-json-string-with-bash-variables
Andrej Podzimek avatar
cn flag
คำสั่ง `awk` ในคำถามของคุณไม่สมเหตุสมผล อย่างแรก มันเขียนลงในไฟล์อื่น ไม่ใช่ไฟล์ที่คุณ `cat` ด้านล่าง ประการที่สอง `file.txt` จะมีเวลาปัจจุบัน (จากเอาต์พุต `w`) ไม่ใช่บรรทัดที่มี `file`
Andrej Podzimek avatar
cn flag
`PROCPS_USERLEN=32 PROCPS_FROMLEN=32 w | หาง -n+2 | ในขณะที่อ่าน -r ผู้ใช้ tty จากการเข้าสู่ระบบที่ไม่ได้ใช้งานให้ละทิ้ง ทำ echo -e '{\n "USER" : "'"$user"'",\n "TTY" : "'"$tty"'",\n "FROM" : "'"$จาก"'" ,\n "เข้าสู่ระบบ" : "'"$เข้าสู่ระบบ"'",\n "IDLE" : "'"$idle"'"\n}'; เสร็จสิ้นแล้ว อย่างไรก็ตาม ตัวแปรสภาพแวดล้อมทั้งสองแสดงว่าเหตุใดการแยกวิเคราะห์ผลลัพธ์จาก 'w' จึงเป็นความคิดที่ไม่ดี ไม่ต้องพูดถึงว่าคุณอาจต้องส่งออก (เช่น) `LC_ALL=en_US.UTF-8` เพื่อให้ได้ผลลัพธ์ที่สอดคล้องกัน มิฉะนั้นวันที่เข้าสู่ระบบจะถูกสะกดในภาษาปัจจุบัน เป็นต้น
Score:2
ธง hr

ฉันอยากจะแนะนำ มิลเลอร์ สำหรับสิ่งนี้ - โดยเฉพาะให้แปลงจาก "pretty print" เป็น JSON:

$ mlr --ipprint --ojson ไฟล์แมว
{ "ผู้ใช้": "lava1", "TTY": "pts/0", "จาก": "157.48.149.102", "LOGIN@": "05:03", "IDLE": "31.00s", " JCPU": "0.31s", "PCPU": "0.31s", "อะไร": "-bash" }
{ "ผู้ใช้": "azureuse", "TTY": "pts/1", "จาก": "157.48.149.102", "LOGIN@": "07:26", "IDLE": "0.00s", " JCPU": "0.07s", "PCPU": "0.05s", "อะไร": "w" }

การเลือกฟิลด์เฉพาะด้วย ตัด และเปลี่ยนชื่อเป็น เข้าสู่ระบบ@ สนาม:

$ mlr --ipprint --ojson ตัด -f USER,TTY,FROM,LOGIN@,IDLE จากนั้นเปลี่ยนชื่อไฟล์ LOGIN@,LOGIN
{ "ผู้ใช้": "lava1", "TTY": "pts/0", "จาก": "157.48.149.102", "เข้าสู่ระบบ": "05:03", "ว่าง": "31.00s" }
{ "ผู้ใช้": "azureuse", "TTY": "pts/1", "จาก": "157.48.149.102", "เข้าสู่ระบบ": "07:26", "IDLE": "0.00s" }
Score:0
ธง cn

เนื่องจากคุณต้องการผลิต JSON มาใช้กันเถอะ

ว \
| หาง -n +3 \
| jq -R ' | แยก ("\s+"; "g") | {ผู้ใช้:.[0], TTY:.[1], จาก:.[2], เข้าสู่ระบบ:.[3], IDLE:.[4]}'

ฉันกำลังใช้ หาง เพื่อข้าม 2 บรรทัดแรกของ เอาต์พุต

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา