2013-07-23 55 views
0

我試圖找到一種方法來排除文件上的數字,當我cat ti但我只想排除打印$ 1上的數字,並且我想保留該單詞前面的數字。我有一些我認爲可能會發揮作用的東西,但並沒有給我想要的東西。我還展示了一個文件看起來像什麼的例子。文件由管道分隔。使用awk排除字符

cat files | awk -F '|' ' {print $1 "\t" $2}' |sed 's///g' 

輸入:

b1ark45 | dog23 | brown 
m2eow66| cat24 |yellow 
h3iss67 | snake57 | green 

輸出

b1ark dog23  
m2eow cat24  
h3iss nake57 
+0

失去ca t(谷歌UUOC)。 awk可以打開文件就好了。 –

回答

1

試試這個:

awk -F'|' -v OFS='|' '{gsub(/[0-9]/,"",$1)}7' file 

你的例子的輸出是:

bark | dog23 | brown  
meow| cat24 |yellow  
hiss | snake57 | green 

編輯

這個輸出COL1(沒有結束數字和空格)和col2上,通過<tab>

kent$ echo "b1ark45 | dog23 | brown 
m2eow66| cat24 |yellow 
h3iss67 | snake57 | green"|awk -F'|' -v OFS='\t' '{gsub(/[0-9]*\s*$/,"",$1);print $1,$2}' 
b1ark dog23 
m2eow cat24 
h3iss snake57 
+0

這確實有效,但我需要保留在單詞前面的數字。 我只想排除打印$ 1上的數字,並且我想保留該單詞前面的數字。 對不起應該說從一開始 – user2607210

+0

試試這個'awk -F'|' -v OFS ='|' '{sub(/ [0-9] + $ /,「」,$ 1)} 1'文件' –

+0

@ user2607210 jaypal的解決方案是否適合您?你想保留結局空間嗎?請爲您的輸入添加一個輸出示例。這樣我們才能看到你真正期望的是什麼。 – Kent

0

這可能會爲工作分離你(GNU sed):

sed -r 's/[0-9]*\s*\|\s*(\S*).*/ \1/' file