任何人都可以解釋如何使用sed刪除所有字符到&,包括CSV文件中的第二個逗號嗎?sed腳本刪除所有字符,包括第二個逗號在一行
一個典型行的開頭可能看起來像
1234567890,ABC/DEF,和數字在第一列中的數字以隨機順序變化,即有可能是9個或10或11個獨立的數字和第二列中的字母也可以是隨機的。這種隨機性和變化的長度使得不可能使用任何明確的模式搜索。
任何人都可以解釋如何使用sed刪除所有字符到&,包括CSV文件中的第二個逗號嗎?sed腳本刪除所有字符,包括第二個逗號在一行
一個典型行的開頭可能看起來像
1234567890,ABC/DEF,和數字在第一列中的數字以隨機順序變化,即有可能是9個或10或11個獨立的數字和第二列中的字母也可以是隨機的。這種隨機性和變化的長度使得不可能使用任何明確的模式搜索。
你可以使用sed這樣
sed -e 's/^\([^,]*,\)\{2\}//'
不是100%肯定做它的語法,我試了一下,似乎工作,雖然。它會刪除零個或更多的任何東西 - 逗號後跟一個逗號,並且所有匹配的內容都會連續兩次匹配。
但更容易是使用切割,這樣
cut -d, -f3-
將使用逗號作爲分隔符,並打印領域3以上。
編輯:
只是爲了記錄在案,無論sed和切割可以用文件作爲參數工作,只是將其追加在最後像這樣
cut -d, -f3- myfile.txt
或者你可以管的輸出你的程序通過它們
./myprogram | cut -d, -f3-
sed不是工具的「正確」選擇(雖然它可以完成)。既然你有結構化的數據,你可以使用fields/delimiter方法,而不是創建複雜的正則表達式。
您可以使用剪切
$ cut -f3- -d"," file
或呆子
$ gawk -F"," '{$1=$2=""}1' file
$ gawk -F"," '{for(i=3;i<NF;i++) printf "%s,",$i; print $NF}' file
感謝所有答覆 - 的幫助提供我寫低於該不會是我想要的簡單可執行腳本。
#!/bin/bash
cut -d, -f3- ~/Documents/forex_convert/input.csv |
sed -e '1d' \
-e 's/-/,/g' \
-e 's/ /,/g' \
-e 's/:/,/g' \
-e 's/,D//g' > ~/Documents/forex_convert/converted_input
exit
如果您使用的GNU sed'你可以做'sed的-r 's/^([^,] *){2} //''這是對眼睛更容易一些。 – 2009-11-23 00:08:59
@Dennis Williamson:是的,posix正則表達式似乎並沒有用於人類眼睛,除非是在尋找固定的字符串...... :) – falstro 2009-11-23 07:59:17