AWK删除了我的空间

时间:2017-03-19 23:50:19

标签: awk tabular

我有像

这样的数据
31 text text t   text  ?::"!!/
2 te    text 32 +ěščřžý
43 te www  ##

uniq -c

输出

我需要得到像

这样的东西
text text t   text  ?::"!!/
te    text 32 +ěščřžý
te www  ##

我尝试使用像

这样的东西
a=$1;
$1=""
$0=substr($0, 2);
printf $0;
print "";

但它删除了我的空格,我得到了像

这样的东西
text text t text ?::"!!/
te text 32 +ěščřžý
te www ##

我也需要保存这个数字。

有没有人知道怎么做?

3 个答案:

答案 0 :(得分:1)

我想你想删除每一行的前导数字,sed对于这项任务来说会更简单

sed -E 's/^[0-9]+ //' file

awk使用默认FS标准化空白区域。如果有更多处理,您可以使用awk中的sub执行相同操作。

答案 1 :(得分:0)

试试这个:

$ echo "31 text text t   text" |awk '{gsub($1FS$2,$2);print}'
text text t   text

您也可以尝试

$ echo "31 text text t   text" |awk '{gsub(/^[0-9]+/,"");print}'
 text text t   text

但在这种情况下,每条线前面都会有一个前导空间。

答案 2 :(得分:0)

$ seq 5 | uniq -c
      1 1
      1 2
      1 3
      1 4
      1 5

$ seq 5 | uniq -c | awk '{sub(/^ *[^ ]+ +/,"")}1'
1
2
3
4
5

$ seq 5 | uniq -c | sed 's/^ *[^ ]* *//'
1
2
3
4
5