最後の 2 番目と 3 番目の間の単語のみを grep する必要があります /
これは以下の抜粋に示されていますが、ファイル名の位置は先頭から数えると必ずしも同じではないことに注意してください。どんなアイデアでも役に立ちます。
/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt
最後の 2 番目と 3 番目の間の単語のみを grep する必要があります /
これは以下の抜粋に示されていますが、ファイル名の位置は先頭から数えると必ずしも同じではないことに注意してください。どんなアイデアでも役に立ちます。
/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt
これがその仕事をするPerlスクリプトです:
my $str = q!/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt!;
my $res = (split('/',$str))[-3];
print $res;
出力:
usernameneedtogrep
私は使用しますawk
:
awk -F/ '{print $(NF-2)}'
/
NF
$NF
最後の列、最後の列自体、および最後から3番目の列のインデックスです$(NF-2)
。もちろん、最初にパスではない入力内の行を除外する必要がある場合があります(たとえば、を使用してgrep
からにパイプするawk
)
このような正規表現はうまくいくはずです:
/.\/(.+?)\/.*?\/.*$/
(遅延検索 (+?
および*?
) を使用しているので、不要なスラッシュが含まれていないことに注意してください)