我怎样才能剥去第一串字符X使用的sed?(How can I strip first X chara

2019-06-26 06:28发布

我在一个小的工业用box编写shell脚本的嵌入式Linux。 我有包含文本的可变pid: 1234 ,我想从行剥离第一X字符,所以只有1234停留。 我有更多的变数,我需要“干净”的,所以我需要切掉X第一字符和${string:5}不会出于某种原因在我的系统工作。

盒子似乎唯一已经被sed

我想作以下工作:

result=$(echo "$pid" | sed 's/^.\{4\}//g')

有任何想法吗?

Answer 1:

这将做的工作太多:

echo "$pid"|awk '{print $2}'


Answer 2:

下面应该工作:

var="pid: 1234"
var=${var:5}

你肯定bash正在执行脚本的壳呢?

即使是POSIX兼容

var=${var#?????}

将优选使用外部过程,尽管这需要你硬编码5以固定长度的图案的形式。



Answer 3:

这里的切使用第一X字符的简明方法cut(1) 本示例删除前4个字符。

echo "$pid" | cut -c 4-


Answer 4:

使用-r选项(“使用扩展的正则表达式在脚本”)到sed为了使用{n}语法:

$ echo 'pid: 1234'| sed -r 's/^.{5}//'
1234


Answer 5:

从切串前两个字符:

$ string="1234567890"; echo "${string:2}"
34567890


Answer 6:

机会是,你将不得不cut为好。 如果是这样:

[me@home]$ echo "pid: 1234" | cut -d" " -f2
1234


Answer 7:

管它通过awk '{print substr($0,42)}' ,其中42比字符下降的数目多一个。 例如:

$ echo abcde| awk '{print substr($0,2)}'
bcde
$


Answer 8:

另一种方式,用cut代替sed

result=`echo $pid | cut -c 5-`


Answer 9:

而不是从一开始就删除n个字符,也许你可以只直接提取的数字。 是这样的...

$ echo "pid: 1234" | grep -Po "\d+"

这可能是一个更强大的解决方案,而且看起来更直观。



Answer 10:

我发现,在回答纯净的sed通过提供这个问题 (当然,张贴了这个问题被张贴后)。 这不正是你问什么,只是在SED:

result=\`echo "$pid" | sed '/./ { s/pid:\ //g; }'\``

在点sed '/./ )是要匹配什么的。 你的问题是什么,我试图,但在我的情况,我想匹配文件中的特定行,然后取消注释。 在我的情况是:

# Uncomment a line:
sed -i '/#\ COMMENTED_LINE_TO_MATCH/ { s/#\ //g; }' /path/to/target/file

-ised是编辑而不是文件(如果你想编辑文件之前,测试你的匹配表达式删除此开关)。

(FTR,我贴这个答案不是信贷,而是因为我想这样做完全用sed的,因为这问题问,没有前面的回答的解决了这个问题。)



Answer 11:

那么,有已经在这里解决方案sedawkcut和使用bash语法。 我只是想在另一个POSIX扔符合变种:

$ echo "pid: 1234" | tail -c +6
1234

-c告诉tail在该字节偏移量开始,从输入数据的结束计数,然而,如果数目与开始+符号,它是从输入数据到结束的开始。



文章来源: How can I strip first X characters from string using sed?
标签: bash shell sed