从Unix中的Text中的field1中的最后一个逗号后需要数据

时间:2014-07-17 04:58:42

标签: unix

在以下查询中需要您提供帮助。

$ cat sample.txt

414d51204d5150525447575648415050529a6af298e,,,002330618820140707134048  ,+0657,45675
414d51204d514e55533732355051543051696344201645c6,002330618820140707134048  ,+0657,tgre,ghty

在最后一个逗号后需要所有字段","在现场1.你可以看到有很多(414d51204d5150525447575648415050529a6af298e ,,,) 输出必须如下所示。

预期产出:

002330618820140707134048  ,+0657,45675
002330618820140707134048  ,+0657,tgre,ghty

由于

4 个答案:

答案 0 :(得分:0)

使用egrepgrep -E

egrep -o '[0-9]{24}\s+\S+' your_file

使用普通grep

grep -o '[0-9]\{24\}[[:blank:]]\+[^[:blank:]]\+' your_file

输出:

002330618820140707134048  ,+0657,45675
002330618820140707134048  ,+0657,tgre,ghty

或使用sed

sed -e 's/^[^[:blank:]]\+,//' your_file

或者

sed -e 's/^[^ \t]\+,//' your_file

或者只是空间:

sed -e 's/^[^ ]\+,//' your_file

答案 1 :(得分:0)

您可以使用shell程序。

cat sample.txt | sed -n 1'p' | tr ',' '\n' | while read word; do
echo $word
done

答案 2 :(得分:0)

如果其他人在这里不起作用,那就是perl oneliner:

perl -lne 'print $1 if /.*?,+(.*)/'

输出:

002330618820140707134048  ,+0657,45675
002330618820140707134048  ,+0657,tgre,ghty

答案 3 :(得分:0)

您可以使用sedcut

  • sed删除空字段
  • 剪切以选择所需字段

示例:

sed -r 's/,+/,/g' < text.txt | cut -d',' -f2-

<强>输出:

002330618820140707134048  ,+0657,45675
002330618820140707134048  ,+0657,tgre,ghty