使用if和substring的awk命令

时间:2014-02-22 14:04:39

标签: if-statement awk sh substr

我有一个输入文件(input.txt),如下所示:

    id01    90      5
    id01    80      4
    id01    79      3
    id13    95      5
    id01    77      3
    id01    85      4
    id15    92      5
    id17    99      5
    id18    65      2
    id19    72      3

我想输出文件,如output.txt:

1    90      5
1    80      4
1    79      3
13   95      5
1    77      3
1    85      4
15   92      5
17   99      5
18   65      2
19   72      3 

我进行了搜索,并且能够找到一些单独工作的代码示例(就像子串部分一样,或者只是部分)但是当我将整个事物放在一起时,我会遇到语法错误。我在ssh环境中这样做,我看到sh和bash之间的语法略有不同。以下是我能够提出的但却给出了语法错误:

awk -F $'\t' 'BEGIN {OFS = FS} { num = substr($1, 3, 1) if (num == "0") num2 = substr($1,4,1) else num2= substr($1,3,2)  {print num2, $2, $3 } }' input.txt > output.txt 

我将非常感谢您对此提供任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

有些人喜欢awk

awk '{sub(/id/,"",$1);$1=$1+0}8' OFS="\t"
1       90      5
1       80      4
1       79      3
13      95      5
1       77      3
1       85      4
15      92      5
17      99      5
18      65      2
19      72      3

更新以摆脱领先的0

答案 1 :(得分:1)

试试这个sed

sed 's/id//g' file.txt

要摆脱前导零,

sed 's/id0*//g' file.txt