テキストファイルからファイルパスをgrepする方法は?

テキストファイルからファイルパスをgrepする方法は?

次のパスのリストを含むファイルがあります。

"1"       "/user/bin/share"
"2"       "/home/user/.local"
"3"       "/root/"

抽出する方法はありますか?ただ道?数字や引用符は必要ありません。ファイルのパスをsedまたはgrepする方法は?そのような操作にはどの正規表現が必要ですか?

答え1

すべてのパスが次から始まる場合は/一致させることができます。/"

$ grep -o '/[^"]*' file
/user/bin/share
/home/user/.local
/root/

または、より構造化されたアプローチのために、次をawk使用して2番目のフィールドから引用符を削除し、2番目のフィールドのみを印刷します。

awk '{gsub(/"/,"",$2); print $2}' file

答え2

パスに改行文字が含まれていないと仮定すると、

$ sed 's/^.*[[:blank:]]"//; s/"$//' <file
/user/bin/share
/home/user/.local
/root/

コードは、スペース(スペースまたはタブ)の前にある最初の文字をsed含む各行のすべての項目を削除することから始まります。次に最後の項目を"削除します。"

これにより、パスにスペースと埋め込み文字を含めることができますが、"スペースと組み合わせは許可されません"

答え3

なぜ簡単ではないのですか?

awk -F\" '{print $4}' file
/user/bin/share
/home/user/.local
/root/

働く?

答え4

簡単な方法。を使用してフィールド#4を削除し、引用符を区切り文字として使用しますcut

$ cut -f4 -d\" file
/user/bin/share
/home/user/.local
/root/
$

関連情報