看板 Linux 關於我們 聯絡資訊
我有從別的來源的紀錄譬如 時間;檔名 201610060820.18;pic1.tif 201610060820.29;pic5.tif 這樣,我想執行touch -d $1 "$2" 或是 num1;num2;sda 0;31;sda 100;128;sda 2047;1;sdb 想執行 dd if=/dev/$3 of=/tmp/$3_$1-$2 skip=$1 count=$2 然後讀出特定位置到檔案 那個$1 $2就是對應column的順序 問題是我如果直接用cut -d ';' -f 1 一開始就有問題,我推測是一開始$1就好幾行造成的, 所以我想到的是用迴圈一次sed印出一行→cut不同column指定到變數→指令+變數 我想請問有沒有更短的方式,從資料讀出→擺上需要的文字後,直接執行? 我目前是用文書軟體把每一個column切下,前後擺上指令框架合併,貼成script 再執行,不過那些database會一直變化,如果每次都這樣就工程浩大了。 -- "Don't hate the player. Hate the game." 當看到哪個名人賺了大錢,領到高額補助或利息,不要去指責他, 而是要指責那個制度、創造那個制度的人,以及默許那個制度的人。 不然你認為一個人不領18%或是一個人不炒房價,就會改變整體環境嗎? 還不如改變【修改制度的人】,才能從根源改變一切。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.32.99 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1475978798.A.C49.html ※ 編輯: LIAR (180.176.32.99), 10/09/2016 10:08:22
ckc1ark: 如果欄位沒有什麼意外 我想法是把;和\n都換成\0再用xargs 10/09 14:04
ckc1ark: tr '\n;' '\0'<input.txt|xargs -0 -n2 bash -c 'touch - 10/09 14:05
ckc1ark: d $0 "$1"' 10/09 14:05
ckc1ark: tr '\n;' '\0'<input.txt|xargs -0 -n2 touch -d 10/09 14:07
ckc1ark: 如果沒要換順序的話可以這樣寫 10/09 14:07
losepacific: awk -F';' '{print "touch -d "$1" \""$2"\""}' 10/09 19:09
losepacific: 如果欄位資料有跨行,那需要'BEGIN{RS=某}'修正 10/09 19:25
HamalAri: 用 read 寫迴圈一行一行讀 10/09 20:31
rickieyang: 我都用 awk printf 出指令,pipe 給 sh - 10/10 01:55
changyj: IFS=';' 10/11 11:38
changyj: while read one two three others 10/11 11:39
changyj: do echo "$one,$two,$three,$others" 10/11 11:40
changyj: done < 要讀入的檔案 10/11 11:40
changyj: unset IFS 10/11 11:41
changyj: 第一個欄位會存入one, 第二個會存入 two, ... 10/11 11:42
changyj: read 後面接四個變數,第一二三欄位會存入前三個變數, 10/11 11:42
changyj: 第四個欄位及以後會存入第四個變數 10/11 11:43
LIAR: 感謝各位 10/22 23:15