使用grep剪切特定字符串的长度

时间:2019-01-17 12:07:15

标签: grep

假设我们在文本文件中有一个字符串"test123"
我们如何只切出"test12",或者说"test123"后面还有其他垃圾,例如test123x19853,而我们想切出"test123x"

我尝试使用grep -a "test123.\{1,4\}" testasd.txt等等,但是无法正确执行。
我也找了个例子,但没有找到我想要的东西。

3 个答案:

答案 0 :(得分:1)

expr:

var nums = [];

$('#table_serv tr td.serv-nomer').each(function (elem, ind) {
    if(elem > 0 ) {
        nums[parseInt($(this).text())] = elem;
        $(this).text(elem);
    }
});

答案 1 :(得分:0)

如果您对awk感到满意,请尝试执行以下操作(这不会查找连续出现的字母,然后查找连续出现的数字,请不要将其限制为4或5)。

echo "test123x19853" |  awk 'match($0,/[a-zA-Z]+[0-9]+/){print substr($0,RSTART,RLENGTH)}'

如果您想在连续第1次出现字母后只查找1-4位数字,然后尝试遵循(我的awk是旧版本,因此可以使用--re-interval将其删除,以防您拥有最新的版本)。

echo "test123x19853" | awk --re-interval 'match($0,/[a-zA-Z]+[0-9]{1,4}/){print substr($0,RSTART,RLENGTH)}'

答案 2 :(得分:0)

您需要的是-o,仅打印出匹配的内容:

$ echo "test123x19853"|grep -o "test.\{1,4\}"
test123x

$ echo "test123x19853"|grep -oP "test.{1,4}"
test123x
  

-o,--only-matching仅显示匹配PATTERN的行的一部分