我的输入文字采用这种格式
aa5b r1 12715
r2 12221
aa43b ew 13721
eb 122331
aa4b ff 1055440
输出必须
aa5 r1 12715
r2 12221
aa43 ew 13721
eb 122331
aa4 ff 1055440
我试过
awk -F " " '{print $1}' t1 | grep "^aa*" > t2|sed s/b//g t2
此代码的问题在于输入文本没有固定模式。
答案 0 :(得分:1)
使用像perl和regex这样的东西会更容易:
perl -p -e 's/^(aa[0-9]+)\w+/$1/' t1 > t2
答案 1 :(得分:1)
这个版本与sed
怎么样?
sed 's/^\(aa[0-9]*\)b/\1/' t1 > t2
答案 2 :(得分:1)
从您对问题的描述中不清楚规格,但如果您只想在开头'aa'的行上删除所有出现的字符'b',您可以使用:
sed '/^aa/s/b//g'
答案 3 :(得分:0)
awk ' $1 ~ /a/ { $1= substr($1,0,length($1)-1) };1' infile > outfile