我需要使用初始位置和最终位置从一行中提取一个子字符串。我认为它应该很容易用 grep 完成,但仍然没有弄清楚如何。
例如,一行 n 个字符,我想提取从 k 位置开始并在该行的 l 位置结束的子字符串。
显然 l, k < n 和 l > k
我需要使用初始位置和最终位置从一行中提取一个子字符串。我认为它应该很容易用 grep 完成,但仍然没有弄清楚如何。
例如,一行 n 个字符,我想提取从 k 位置开始并在该行的 l 位置结束的子字符串。
显然 l, k < n 和 l > k
Cut 是一个不错的选择。您可以选择范围和单个字段:
$ echo "123456" | cut -c2-4
234
$ echo "123456" | cut -c1,3,6
136
$ echo "123456" | cut -c1-3,6
1236
为什么不使用awk?
echo "12345678" | awk '{print substr($0, 3, 2);}'
# prints '34'
如果你使用 bash 你可以这样做:
LINE="strings"
K=3 ## 4th character starting from index 0
L=5 ## 6th character starting from index 0
echo "${LINE:K:L - K + 1}"
在文件的循环中:
while -r read LINE; do echo "${LINE:K - 1:L - K}"; done < file
至于 awk,基于 L 表示位置而不是长度,其中 0 是起始索引:
awk -v k="3" -v l="5" '{ n = length; print substr($0, k, l - k + 1);}' < file
这是你要找的吗?
String test = "ateststring";
String testa = test.substring(0,4);
String test2 = testa.substring(0,3);
int testc = test.indexOf("test");
String test3 = test.substring(testc,5);
System.out.println(test + ":" + testa + ":" + test2 + ":" +test3);