
/
各行の前に表示される特定のテキストを削除しようとしています。
私は次のようなものがあります:
testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123
testing.db.com/8a8589bf-49e3-4cd7-af15-6753067355c6
私はちょうど次を得たいと思います:
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6
誰でも正規表現を助けることができますか?私が見つけたすべてのアイテムが削除されています。後ろに /
、いいえ今後。
答え1
使用cut
:
$ cut -sd'/' -f2 file.txt ##This will print only the lines containing /
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6
次の提案/
では、連続して一度だけ発生すると仮定します。
使用grep
:
$ grep -o '[^/]*$' file.txt ##This will print the lines not having / too
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6
/
すべての行にある場合は、次を使用することもできます。
bash
パラメータ拡張の使用:
$ while read line; do echo "${line#*/}"; done <file.txt
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6
またはpython
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
print line.split('/')[1].rstrip()
あなたの例に関して、上記の提案はすべて有効です。
答え2
sedを使うと十分簡単です。
echo "testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123" | sed -e "s/.*\///"
デフォルトの構文は「s/search/replace/」です。ここでは、.*\/
スラッシュ(エスケープ)で終わるすべての項目を検索し、それを別の項目に置き換えます。
答え3
パールの使用:
< file.txt perl -pe 's/.*\///'
答え4
sedを使用する2つの方法:
sed -i "s|testing.db.com/||g" file_path_here
または
echo "testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123" | sed -e "s|testing.db.com/||g"