从线上剪切出现的第一个图案

时间:2013-04-19 11:48:51

标签: shell unix

我有一个文件说abc包含如下记录:

$cat xyz
    ABC
    ABCABC
    ABCABCABC

我想剪切第一个模式,所以结果应该是:

AC
ACABC
ACABCABC

我正在尝试使用awk剪切模式:

$ cat xyz|awk -F 'B' '{print $1,$2}'
A CA
A CA
A CA

当然,B是分手,所以我得到了上面的结果。我怎么能这样做? 感谢

1 个答案:

答案 0 :(得分:2)

我了解您要删除每行中的第一个B。如果是这样,这将有效:

sed 's/B//' xyx

输出:

AC
ACABC
ACABCABC

如果您想要替换文件,请添加-i

sed -i 's/B//' xyx

我看到你tried to edit my answer to add a new question - 请注意,你必须更新你的答案或写评论。

  

谢谢,如果我还有一个案例,我想删除第一个模式   只有当我有多个重复模式时才会这样:

$cat xyz
ABC
ABCABC
ABCABCABC
     

输出应为:

ABC
ACABC
ACABCABC
$cat xy

这可以是一种方法:

while read line
do
  if [ `echo $line | grep -o "B" | wc -l` -ge 2 ]
  then
     echo $line | sed 's/B//'
  else
     echo $line
  fi
done < xyz

输出:

ABC
ACABC
ACABCABC