2009-09-14 39 views

回答

1

一個簡單和廉價的劈:

cat INFILE | sed 's/\(.*\)\t\(.*\)\t\(.*\)/\1\tREPLACEMENT\t\3/' > OUTFILE 

測試它:

echo -e 'one\ttwo\tthree\none\ttwo\tthree' | sed 's/\(.*\)\t\(.*\)\t\(.*\)/\1\tREPLACEMENT\t\3/' 

取入

one two three 
one two three 

併產生

one REPLACEMENT three 
one REPLACEMENT three 
3
awk ' { $2="<STRING>"; print } ' <FILENAME> 
+0

打我吧。只是試圖驗證你的答案是通過:-) – 2009-09-14 21:07:57

+1

我認爲這將分裂任何空白,而不僅僅是標籤。添加-F「\ t」可能會有所幫助。 – 2009-09-14 21:11:27

+0

我將如何提供上述命令的參數。例如,如果STRING和FILENAME相同,我可以將該值作爲參數傳遞給命令嗎? – biznez 2009-09-14 21:13:16

2
cat INFILE | perl -ne '$ln=$_;@x=split(/","/); @a=split(/","/, $ln,8);@b=splice(@a,0,7); $l=join("\",\"", @b); $r=join("\",\"", splice(@x,8)); print "$l\",\"10\",\"$r"' 

這是一個將第10列更改爲「10」的示例。我更喜歡這個,因爲我不需要像sed技術那樣計算匹配的括號。

相關問題