Unix sed命令-提取两个斜杠之间的文本

lymnna71  于 2022-11-04  发布在  Unix
关注(0)|答案(5)|浏览(222)

很抱歉用sed问了一个基本的问题,我一直在想办法解决,但是我的大脑失败了...
我正在尝试在一些unix shell中提取两个斜杠之间的文本。
我想提取第三和第四斜杠之间的文本(DEV)。我一直试图构建以下内容,但没有成功。

echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" |
sed 's|\(.3\)/.4|\1|'

任何帮助都不胜感激。
非常感谢

z9smfwbn

z9smfwbn1#

使用awk应该是一件容易的事情,尝试以下操作。简单地将字段分隔符设置为/,并根据输出要求打印第四个字段。

echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" | awk -F'/' '{print $4}'

使用sed,您可以尝试以下操作:

echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" | 
sed -E 's/^\/[^/]*\/[^/]*\/([^/]*)\/.*/\1/'

sed -E 's_^/[^/]*/[^/]*/([^/]*)/.*_\1_' Input_file
djp7away

djp7away2#

-d
-d为分隔符,-f4为第4项(假定第1项为空)

qyswt5oh

qyswt5oh3#

用途

path="/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF"
IFS='/' read -ra arr <<< "$path"
echo ${arr[3]}

结果DEV .

path="/dir with space/test/DEV/2021-05-21/out/9988776_948016287_1.PDF"的结果相同。

5sxhfpxr

5sxhfpxr4#

这可能对你有用(GNU sed):

sed -nE 's#^(([^/]*)/){4}.*#\2#p' file

从由/分隔的记录中提取第四个字段。

bjg7j2ky

bjg7j2ky5#

使用“剪切”命令:

echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" |cut -d/ -f4

其中:
-d:分隔符
-f:字段编号

使用Awk命令:

echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" |awk -F/ '{print $4}'

-F:字段分隔符

相关问题