2016-04-25 53 views
1

我想添加一個數字的多個空格是「20120911162500」首先增加四個空格,然後每兩個之後。如何在第一個四個空格之後添加一個空格,然後在兩個空格之後使用awk

所需的輸出是

2012 09 11 16 25 00 

這是我的嘗試:

echo "2012 09 11 16 25 00" |sed 's/.\{4\}/& /g' 

但輸出2012 0911 1625 00

+0

隨着該工具/語言? – Pierre

+0

你試過了嗎? – Pierre

+0

是的,但我沒有正確地嘗試echo「2012 09 11 16 25 00」| sed's /。\ {4 \} /&/ g'輸出2012 0911 1625 00 – Ben

回答

-1

使用Add按鈕單擊事件

將給予空間第一後四位和兩個再經過第二位空間等等

對於實例

string data = TextBox1. Text; 
    string[] no = new string[data.Length]; 
    string number = ""; 
    int k = 4; 
    for (int i = 0; i < data.Length; i++) 
    { 
     if (i == k) 
     { 
      number += " "; 
      k = k + 2; 
     } 

     number += data[i] ; 
    } 
    Label1.Text = number.ToString(); 
+0

謝謝,但可以使用sed或awk來解決這個問題 – Ben

+0

這是題外話題。 – Pierre

0

你可以這樣做方式:

echo "20120911162500" |sed 's/.\{2\}/& /g;s/ //' 
2012 09 11 16 25 00 

給每2位增加空間s/.\{2\}/& /g然後刪除第一個空格,使其成爲4位數s/ //'

1

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

sed 's/../ &/3g' file 

此預先考慮到第三對字符和其後每2個字符的空間。

0

創建一個文件

f.awk

function sep(i, n) { # which separator to use? 
    if (i==n)  return "" 
    if (i<4)   return "" 
    if (i % 2 == 0) return " " 
    return "" 
} 

function format(num, n, i, ans) { 
    n = split(num, a, "") 
    for (i=1; i<=n; i++) 
     ans = ans a[i] sep(i, n) 
    return ans 
} 

{ 
    print format($0) 
} 

用法:

echo 123456789| awk -f f.awk 
+0

非常好,謝謝 – Ben

相關問題