cle*_*hoi 5 linux bash shell awk
我有一个命令来切断绳子。
我想知道Linux“awk”中命令的控制索引的详细信息
我有两个不同的案例。
我想在下面的示例字符串中获取单词“Test”。
1. "Test-01-02-03"
2. "01-02-03-Test-Ref1-Ref2
Run Code Online (Sandbox Code Playgroud)
第一个我可以得到像
substr('Test-01-02-03',0,index('Test-01-02-03',"-"))
-> Then it will bring result only "test"
Run Code Online (Sandbox Code Playgroud)
第二种情况怎么样,我不确定如何使用索引函数在这种情况下获得测试。
你对 awk 的使用有什么想法吗?
谢谢!
这是如何使用 index() 查找/打印子字符串:
$ cat file
Test-01-02-03
01-02-03-Test-Ref1-Ref2
$ awk -v tgt="Test" 's=index($0,tgt){print substr($0,s,length(tgt))}' file
Test
Test
Run Code Online (Sandbox Code Playgroud)
但这可能不是解决您实际问题的最佳解决方案。
为了进行比较,以下是如何使用 match() 对 RE 进行等效操作:
$ awk -v tgt="Test" 'match($0,tgt){print substr($0,RSTART,RLENGTH)}' file
Test
Test
Run Code Online (Sandbox Code Playgroud)
如果您喜欢这个match()概要,以下是如何编写自己的函数来对字符串执行此操作:
awk -v tgt="Test" '
function strmatch(source,target) {
SSTART = index(source,target)
SLENGTH = length(target)
return SSTART
}
strmatch($0,tgt){print substr($0,SSTART,SLENGTH)}
' file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27134 次 |
| 最近记录: |