我需要使用初始和最终位置从一行中提取子字符串。我认为应该很容易用grep完成,但仍然没有想出如何。
一个例子,一行n个字符,我想从k位置开始提取子字符串,并以该行的l位置结束。
显然l,k < n和l> ķ
答案 0 :(得分:5)
Cut是一个不错的选择。您可以选择范围和单个字段:
$ echo "123456" | cut -c2-4
234
$ echo "123456" | cut -c1,3,6
136
$ echo "123456" | cut -c1-3,6
1236
答案 1 :(得分:4)
为什么不使用awk?
echo "12345678" | awk '{print substr($0, 3, 2);}'
# prints '34'
答案 2 :(得分:2)
如果你正在使用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
答案 3 :(得分:0)
答案 4 :(得分:-1)
这是你想要的吗?
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);