2014-06-30 119 views
1

結合sed命令一個命令結合SED命令

我目前在做這兩個命令

刪除每一行

sed -i 's/\(.\{1\}\)//'          

在每一行中刪除多餘的空格的第一個字符

sed -i 's/ //g'             

它正在分析的237GB文件中有3.4億條線,我不希望它需要通過兩次。

+0

命令看起來像sed -i '(\ {1 \} \)S/\ //;' S///G」 發現你只需要使用分號。對不起,堵塞板子。 – BulletB

+1

第一個命令與'sed -i'/.//''有什麼不同? – Beta

+0

老實說不知道,發現以前的stackoverflow問題的命令,它的工作,所以我沒有質疑它。 – BulletB

回答

2

下面的sed命令會組合這兩者。使用;作爲分隔符來組合兩個sed操作。

sed -i 's/\(.\{1\}\)//;s/ //g' file 
1

您可以嘗試awk

awk '{sub(/./,"");$1=$1}1' file 

sub(/./,"")刪除第一個字符
$1=$1刪除所有雙空間。

+0

是一種天生比另一種更快的方式嗎?由於文件的大小,我正在追求速度。 – BulletB

+0

也可以awk編輯文件嗎?如果因爲複製文件的I/O時間過長而不能提供太多幫助。 – BulletB

+0

'awk'不適用於編輯。您可以執行'awk'代碼'file> tmp&mv tmp file'。爲了速度,你需要測試。 – Jotne

2

另一種方式:

sed -i -e 's/\(.\{1\}\)//' -e 's/ //g' file