ddz*_*wmm 0 shell text-processing
我有一个大文本保存了很多文件路径及其信息
# just for demostration
/a/b/c/d/e
/a/b/c/d
/a/b/c
/a/b
/a
/b/c
/b
/c/d
/c
....
Run Code Online (Sandbox Code Playgroud)
我只想显示那些具有特定数量的特定字符,例如,
//这样我只提取根文件夹或只提取到第一级子文件夹。
Awk 解决方案:
- 只有一个/:
awk -v sep=1 'BEGIN{ FS=OFS="/"; sep += 1 }NF == sep' file
Run Code Online (Sandbox Code Playgroud)
输出:
/a
/b
/c
Run Code Online (Sandbox Code Playgroud)
- 不超过两个/:
awk -v sep=2 'BEGIN{ FS=OFS="/"; sep += 1 }NF <= sep' file
Run Code Online (Sandbox Code Playgroud)
输出:
/a/b
/a
/b/c
/b
/c/d
/c
Run Code Online (Sandbox Code Playgroud)
sep- 多变的; 代表目录分隔符的计数FS和OFS- 分别是字段分隔符和输出字段分隔符NF- 代表字段总数如果您需要将上述方法组合成一个awk命令:
awk -v sep=1 'BEGIN{ FS=OFS="/"; sep += 1 }(sep==2 && NF==sep) || (sep>2 && NF<=sep)' file
Run Code Online (Sandbox Code Playgroud)