主題: [求助]文字檔案處理 [打印本頁]
發表人:
pcca 時間: 2014-10-8 11:27 AM 主題: [求助]文字檔案處理
我現在有一個狀況, 一個文字檔案, 內容如下:
abc@example.com sales@yahoo.com,sales@gmail.com,contact@gmail.com
joe9976@example.com admin@abc_tech.com,hotimg@twedk.org
peter@hotmail.com tinypic@gmail.com,pillowangel@mediafire.com,imm@abc.com,debi@hotmail.com
我要變成:
abc@example.com sales@yahoo.com
abc@example.com sales@gmail.com
abc@example.com contact@gmail.com
joe9976@example.com admin@abc_tech.com
joe9976@example.com hotimg@twedk.org
peter@hotmail.com tinypic@gmail.com
peter@hotmail.com pillowangel@mediafire.com
peter@hotmail.com imm@abc.com
peter@hotmail.com debi@hotmail.com
求助!!
發表人:
Observer 時間: 2014-10-8 12:05 PM
我自己慣用的軟體的話
笨方法如下
我會用 Ultraedit 的 十六進位編輯 (HEX) 模式
將逗號(2c)跟空白(20)取代 成 0D 0A
這樣就會把所有資料都分行
存成 txt 檔之後
用 excel 或 access 匯入,然後再排序
排序後再匯出
發表人:
XDR 時間: 2014-10-8 01:36 PM
用WORD
把 , 還有 ^w
用 ^p 取代
再丟進 excel排序
發表人:
pcca 時間: 2014-10-8 02:38 PM
有點麻煩, 因為其實這只是我整個要處理的東西其中的一部份
中間會跨伺服器... 所以想寫個 script 自動化一下。
發表人:
陽だまり 時間: 2014-10-9 12:12 PM
需要更進一步的功能就請自已處理了
<textarea name="input" rows="10" cols="100"><br>
<textarea name="output" rows="10" cols="100"></textarea>
<input type="button" value="go" onclick="go()">
<script>
function go(){
var inputText = document.getElementsByName("input")[0].value
var outputText = ""
var inputArray = inputText.split("\n")
for(var i=0;i<inputArray.length;i++){
var thisArray = inputArray[i].split(" ")
var leftArray = thisArray[0]
var rightArray = thisArray[1].split(",")
for(var j=0;j<rightArray.length;j++){
outputText += leftArray + " " + rightArray[j] + "\n"
}
}
document.getElementsByName("output")[0].value = outputText
}
</script>
發表人:
pcca 時間: 2014-10-9 01:45 PM
五體投地, 一堆神人! 先謝謝大家!
也拜託朋友幫忙, 他給的答案:
BEGIN {FS="[ ,]" }
{
head=$1
for(i=2;i<=NF;i++)
print head,$i
}
存成 pcca.awk
然後
$ awk -f pcca.awk your_data_file
發表人:
x13 時間: 2015-4-11 08:17 AM
既然是linux
先決定你的資料會不會到 windows 上,不會就用LF
CRLF ( \r\n ) ( 0x0D 0x0A )
LF ( \n ) ( 0x0A )
第一個方法
tr ',' '\n' < file
第二個方法
sed 's/\,/\n/g' file
都是一行
發表人:
hauha 時間: 2015-10-17 08:52 PM
1. 把資料存成文字檔案, 如twed2k.txt
2. 在Linux下編輯twed2k.sh, 內容如下
#=========================================
#!/bin/sh
INPUT="twed2k.txt"
INPUT1=`cat $INPUT | awk '{print $1}' | xargs`
for a in $INPUT1
do
b1=`cat $INPUT | grep $a | awk '{print $2}' | sed "s/,/ /g"`
for b in $b1
do
echo $a $b
done
done
#=========================================
3. chmod 700 twed2k.txt
4. ./twed2k.sh
執行結果:
hauha@ubuntu:~# cat twed2k.txt
abc@example.com sales@yahoo.com,sales@gmail.com,contact@gmail.com
joe9976@example.com admin@abc_tech.com,hotimg@twedk.org
peter@hotmail.com tinypic@gmail.com,pillowangel@mediafire.com,imm@abc.com,debi@hotmail.com
hauha@ubuntu:~# ./twed2k.sh
abc@example.com sales@yahoo.com
abc@example.com sales@gmail.com
abc@example.com contact@gmail.com
joe9976@example.com admin@abc_tech.com
joe9976@example.com hotimg@twedk.org
peter@hotmail.com tinypic@gmail.com
peter@hotmail.com pillowangel@mediafire.com
peter@hotmail.com imm@abc.com
peter@hotmail.com debi@hotmail.com
發表人:
pcca 時間: 2015-12-28 10:17 AM
發表人:
小坦克 時間: 2018-8-9 11:27 AM
學vim用macro很方便
發表人:
alexanita 時間: 2018-8-11 09:11 AM
#!/bin/sh
# 輸入資料文字檔案來源 input_data.txt
# abc@example.com sales@yahoo.com,sales@gmail.com,contact@gmail.com
# joe9976@example.com admin@abc_tech.com,hotimg@twedk.org
# peter@hotmail.com tinypic@gmail.com,pillowangel@mediafire.com,imm@abc.com,debi@hotmail.com
#
#Input Text File Name 輸入檔案名稱
input_file=input_data.txt
IFS=$'\r\n'
head_email_array=( $(cat ${input_file} | cut -d' ' -f1) )
for head_email_item in ${head_email_array[@]}
do
IFS=$'\ '
body_email_array=( $(grep ${head_email_item} ${input_file} | cut -d' ' -f2 | sed -e 's/,/\ /g') )
for body_email_item in ${body_email_array[@]}
do
# 輸出所要結果
echo "${head_email_item} ${body_email_item}"
done
done
歡迎光臨 TWed2k (http://twed2k.org/) |
Powered by Discuz! 4.1.0 |