2013-02-17 46 views
1

我有數據,是在形式這樣的Unix返回的電話號碼,需要格式化

 
JSD4863 XXX-XX-XXXX DOE, JOHN C JR-II BISS CPSC BS INFO TECH 412/779-9445 

它的大名單,所以我做了一個循環中的某些行閱讀。它看起來像這樣

#!/bin/bash 
for linePosition in {11..22} 
do 
    holder=`sed -n "${linePosition}p" $1|awk '{print $12}'` 
    echo "$holder" 
done 

它打印出的數量412/779-9445。適用於所有 不過,我只關心最後的4號線(如9445) 我可以在迴路中添加什麼把它劃到這一點? 我試過cut,也許我的語法是不對的。

回答

0

sed -rn 's/.*-([0-9]{4})$/\1/p'

+0

由此產生的空行,以及。 – onTheInternet 2013-02-17 19:55:54

+0

我在stuff.txt中放了一堆行,並運行以下命令:cat stuff.txt | sed -rn's /.*-(。*)$/\ 1/p'| xargs的echo''' – 2013-02-17 20:05:23

+0

你也可以用此子你的整個代碼(讀取11和22之間只行):'''貓stuff.txt | sed -rn '11,22s /.*-(。*)$/\ 1/p'| xargs echo''' – 2013-02-17 20:08:40

0

看看下面的。通過第一條命令,我向您展示了一個工作腳本的外觀。用第二個命令顯示你從示例腳本輸出。

$ cat a.sh 
#!/bin/sh 
sed -n '11,22p' $1 | grep -o '[0-9]*$' 

$ ./a.sh a.txt 
9445 
9445 
9445 
9445 
9445 
9445 
9445 
9445 
9445 
9445 
9445 
9445 
0

僅awk中:

awk 'FNR>=11 && FNR<=22 {print $12}' file 

SED + AWK:

sed -n '11,22p' | awk '{print $12}'