很抱歉用sed问了一个基本的问题,我一直在想办法解决,但是我的大脑失败了...我正在尝试在一些unix shell中提取两个斜杠之间的文本。我想提取第三和第四斜杠之间的文本(DEV)。我一直试图构建以下内容,但没有成功。
echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" | sed 's|\(.3\)/.4|\1|'
任何帮助都不胜感激。非常感谢
z9smfwbn1#
使用awk应该是一件容易的事情,尝试以下操作。简单地将字段分隔符设置为/,并根据输出要求打印第四个字段。
awk
/
echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" | awk -F'/' '{print $4}'
使用sed,您可以尝试以下操作:
sed
echo "/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" | sed -E 's/^\/[^/]*\/[^/]*\/([^/]*)\/.*/\1/'
或
sed -E 's_^/[^/]*/[^/]*/([^/]*)/.*_\1_' Input_file
djp7away2#
-d-d为分隔符,-f4为第4项(假定第1项为空)
-d
-f4
qyswt5oh3#
用途
path="/share/test/DEV/2021-05-21/out/9988776_948016287_1.PDF" IFS='/' read -ra arr <<< "$path" echo ${arr[3]}
结果:DEV .
DEV
path="/dir with space/test/DEV/2021-05-21/out/9988776_948016287_1.PDF"的结果相同。
path="/dir with space/test/DEV/2021-05-21/out/9988776_948016287_1.PDF"
5sxhfpxr4#
这可能对你有用(GNU sed):
sed -nE 's#^(([^/]*)/){4}.*#\2#p' file
从由/分隔的记录中提取第四个字段。
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:字段分隔符
5条答案
按热度按时间z9smfwbn1#
使用
awk
应该是一件容易的事情,尝试以下操作。简单地将字段分隔符设置为/
,并根据输出要求打印第四个字段。使用
sed
,您可以尝试以下操作:或
djp7away2#
-d
-d
为分隔符,-f4
为第4项(假定第1项为空)qyswt5oh3#
用途
结果:
DEV
.path="/dir with space/test/DEV/2021-05-21/out/9988776_948016287_1.PDF"
的结果相同。5sxhfpxr4#
这可能对你有用(GNU sed):
从由
/
分隔的记录中提取第四个字段。bjg7j2ky5#
使用“剪切”命令:
其中:
-d:分隔符
-f:字段编号
使用Awk命令:
-F:字段分隔符