多くのファイルパスとその情報を格納する大きなテキストがあります。
# just for demostration
/a/b/c/d/e
/a/b/c/d
/a/b/c
/a/b
/a
/b/c
/b
/c/d
/c
....
特定の数の特定の文字を持つ文字だけを表示したいです。例えば、
- 単一
/
- 2個以下
/
これにより、ルートフォルダのみを抽出するか、最初のレベルのサブフォルダのみを抽出します。
ベストアンサー1
Awk
解決策:
- 1つだけ/
:
awk -v sep=1 'BEGIN{ FS=OFS="/"; sep += 1 }NF == sep' file
出力:
/a
/b
/c
- 2個以下/
:
awk -v sep=2 'BEGIN{ FS=OFS="/"; sep += 1 }NF <= sep' file
出力:
/a/b
/a
/b/c
/b
/c/d
/c
sep
- 変更可能仕切りセダFS
およびOFS
- は、それぞれフィールド区切り記号と出力フィールド区切り記号です。NF
- 代表するフィールドの総数
上記の方法を1つのコマンドにまとめる必要がある場合awk
:
awk -v sep=1 'BEGIN{ FS=OFS="/"; sep += 1 }(sep==2 && NF==sep) || (sep>2 && NF<=sep)' file