sed - 只获取中间没有空格的文本
sed - get only text in between without spaces
如何获取此 SED 语句中 - 之间的文本?
通过
sed -n 's/.* - \([^.]*\).*/\1/p'
文件内容
2021-08-25_@lumpsum_7000607227442711813 - App-using - ZMRUGEoLc_.mp4
实际
ZMRUGEoLc_
想要(没有开头和结尾space)
App-using
有了sed
,就可以用
sed -n 's/.* - \(.*\) - .*//p' file
这里,.* - \(.*\) - .*
匹配任意文本,space+-
+space,捕获任意文本,最大为space+-
+space 然后匹配字符串的其余部分。整个匹配被替换为捕获的值并打印该值。
参见 online demo:
#!/bin/bash
s='2021-08-25_@lumpsum_7000607227442711813 - App-using - ZMRUGEoLc_.mp4'
sed -n 's/.* - \(.*\) - .*//p' <<< "$s"
# => App-using
使用 awk
,您可以使用
awk -F' - ' '{print }' file
#!/bin/bash
s='2021-08-25_@lumpsum_7000607227442711813 - App-using - ZMRUGEoLc_.mp4'
awk -F' - ' '{print }' <<< "$s"
# => App-using
此处,字段分隔符模式设置为space+-
+space并打印字段2。
您可以使用此 sed
来提取匹配项
sed -E 's/.[^A-Z]*(.[^ ]*).*//' input_file
sed -E 's/.*- (.[^ ]*) .*//' input_file
输出
$ sed -E 's/.[^A-Z]*(.[^ ]*).*//' input_file
App-using
如何获取此 SED 语句中 - 之间的文本?
通过
sed -n 's/.* - \([^.]*\).*/\1/p'
文件内容
2021-08-25_@lumpsum_7000607227442711813 - App-using - ZMRUGEoLc_.mp4
实际
ZMRUGEoLc_
想要(没有开头和结尾space)
App-using
有了sed
,就可以用
sed -n 's/.* - \(.*\) - .*//p' file
这里,.* - \(.*\) - .*
匹配任意文本,space+-
+space,捕获任意文本,最大为space+-
+space 然后匹配字符串的其余部分。整个匹配被替换为捕获的值并打印该值。
参见 online demo:
#!/bin/bash
s='2021-08-25_@lumpsum_7000607227442711813 - App-using - ZMRUGEoLc_.mp4'
sed -n 's/.* - \(.*\) - .*//p' <<< "$s"
# => App-using
使用 awk
,您可以使用
awk -F' - ' '{print }' file
#!/bin/bash
s='2021-08-25_@lumpsum_7000607227442711813 - App-using - ZMRUGEoLc_.mp4'
awk -F' - ' '{print }' <<< "$s"
# => App-using
此处,字段分隔符模式设置为space+-
+space并打印字段2。
您可以使用此 sed
来提取匹配项
sed -E 's/.[^A-Z]*(.[^ ]*).*//' input_file
sed -E 's/.*- (.[^ ]*) .*//' input_file
输出
$ sed -E 's/.[^A-Z]*(.[^ ]*).*//' input_file
App-using