2017-02-04 62 views

回答

5

隨着gawk您可以使用gensub

awk '{print gensub(/ 0([0-9])/," \\1", "g")}' file 
Jan 28\|Jan 29\|Jan 30\|Jan 31\|Feb 1\|Feb 2\|Feb 3\|Feb 4 

或者相同的模式與sed

sed 's/ 0\([0-9]\)/ \1/g' file 
Jan 28\|Jan 29\|Jan 30\|Jan 31\|Feb 1\|Feb 2\|Feb 3\|Feb 4 
+1

使用'gensub'您可以使用打印。所以'awk'{print gensub(/ 0([0-9])/,「\\ 1」,「g」)}'file'可以正常工作。 –

+0

第二位'[0-9]'在模式中無用,因爲'10'之後的數字不會以'0'開始。 – SLePort

+0

它可能不是*數字*明智的,但它是模式明智的。它符合我們正在替換'[](0)(\ d)'vs'[](0)(\ D)'。而且這樣做的成本是0 ... – dawg

2

一個最小的模式簡單地用兩個空格替換空格後跟0(因爲2位數天不會有前導碼0):

sed 's/ 0/ /g' file 

添加-i標誌編輯一個文件:

sed -i 's/ 0/ /g' file 

如果你想更嚴格,與反向引用您可以搜索並替換個月,之後一個空間和0與月和空間不0

sed 's/\(|[A-Za-z]\{3\} \)0/\1 /g' 
1
echo "Jan 28\|Jan 29\|Jan 30\|Jan 31\|Feb 01\|Feb 02\|Feb 03\|Feb 04"|\ 
> awk '{gsub(/ 0/," ")}1' 

Jan 28\|Jan 29\|Jan 30\|Jan 31\|Feb 1\|Feb 2\|Feb 3\|Feb 4 
+0

啊哈,糾正! –

0

這可能爲你工作(GNU SED):

sed 's/\b[0-9]\b/0&/g' file 

前綴的單數字與零。

相關問題