使用awk排除字符

时间:2013-07-23 13:43:59

标签: scripting sed awk

我试图找到一种方法来排除文件中的数字,但我只想排除打印$ 1上的数字,我想保留单词前面的数字。我有一些我认为可能有效的东西,但并不能完全给我我想要的东西。我还展示了文件外观的示例。文件由管道分隔。

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

输入

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

输出

 b1ark dog23    
 m2eow cat24    
 h3iss nake57

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这可能适合你(GNU sed):

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