我正在嘗試將以下代碼的輸出拆分為兩個欄位并將其從 csv 檔案的第三行插入
#!/bin/bash
cid=`git log -n 1 --pretty=format:"%H"`
git diff-tree --no-commit-id --name-only -r $cid | xargs -I {} echo '\'{} | xargs -I {} md5sum > final.csv
當前輸出為一行(需要分成多個欄位)
title,Path
l34sdg232f00b434532196298ecf8427e /path/to/file
sg35s3456f00b204e98324998ecsdf3af /path/to/file
預期產出
最終.csv
title,Path
l34sdg232f00b434532196298ecf8427e,/path/to/file
sg35s3456f00b204e98324998ecsdf3af,/path/to/file
我正在考慮將腳本的輸出放在第三個檔案中,然后使用 awk 逐行讀取該檔案。不確定這是否是正確的方法。提前致謝。
uj5u.com熱心網友回復:
你似乎把事情復雜化了。
#!/bin/sh
cid=$(git log -n 1 --pretty=format:"%H")
git diff-tree --no-commit-id --name-only -r "$cid" |
xargs md5sum |
sed 's/ /,/' > final.csv
這只是用md5sum逗號替換輸出中的兩個空格。
因為這里沒有特定于 Bash 的內容,所以我將 shebang 更改為#!/bin/sh; 顯然,如果您愿意,仍然可以隨意使用 Bash。
我還從過時的`backtick`語法切換到現代$(command substitution)語法。
如果您絕對需要頂部的 CSV 標頭,則在sed腳本中添加它應該是微不足道的。一般來說,標題行比實際有用更令人討厭,所以也許不要。
uj5u.com熱心網友回復:
這種做你要問的:
#!/bin/bash
cid=$(git log -n 1 --pretty=format:"%H")
git diff-tree --no-commit-id --name-only -r "$cid" | while read -r path
do
md5sum "${path}"
done | awk 'BEGIN{printf "%s,%s\n", "title", "path";printf "\n"}{printf "%s,%s\n",$1,$2}' > final.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355197.html
