sed を使用して行の先頭を削除する

sed を使用して行の先頭を削除する

name.txt次の文字列で呼び出されたファイルにリストされています。

Los Angeles, CA us1.vpn.goldenfrog.com
Washington, DC  us2.vpn.goldenfrog.com
Austin, TX  us3.vpn.goldenfrog.com
Miami, FL   us4.vpn.goldenfrog.com
New York City, NY   us5.vpn.goldenfrog.com
Chicago, IL us6.vpn.goldenfrog.com
San Francisco, CA   us7.vpn.goldenfrog.com
Amsterdam   eu1.vpn.goldenfrog.com
Copenhagen  dk1.vpn.goldenfrog.com
Stockholm   se1.vpn.goldenfrog.com
Hong Kong   hk1.vpn.goldenfrog.com
London  uk1.vpn.goldenfrog.com

*.vpn.goldenfrog.comさて、sedを使って前の内容(3文字)をすべて削除したいと思います*

私が望む出力:

hk1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
etc ...

答え1

必要でない場合は、sed次のawkプロセスで削除できます。

awk '{print $NF}' filename

答え2

解決策が必要な場合sed

sed 's/.*[[:blank:]]\([^[:blank:]]*\)$/\1/' file.txt

キャプチャされたグループ(\1)には、置換に使用される最後のスペースの後の行部分が含まれます。

例:

% sed 's/.*[[:blank:]]\([^[:blank:]]*\)$/\1/' file.txt  
us1.vpn.goldenfrog.com
us2.vpn.goldenfrog.com
us3.vpn.goldenfrog.com
us4.vpn.goldenfrog.com
us5.vpn.goldenfrog.com
us6.vpn.goldenfrog.com
us7.vpn.goldenfrog.com
eu1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
se1.vpn.goldenfrog.com
hk1.vpn.goldenfrog.com
uk1.vpn.goldenfrog.com

grepこれも簡単に行えます。

% grep -o '[^[:blank:]]*$' file.txt                   
us1.vpn.goldenfrog.com
us2.vpn.goldenfrog.com
us3.vpn.goldenfrog.com
us4.vpn.goldenfrog.com
us5.vpn.goldenfrog.com
us6.vpn.goldenfrog.com
us7.vpn.goldenfrog.com
eu1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
se1.vpn.goldenfrog.com
hk1.vpn.goldenfrog.com
uk1.vpn.goldenfrog.com

答え3

ファイルがスペースで区切られていると仮定すると、最後のスペース文字まで各行の内容を簡単に削除できます。

$ sed 's/.* //' file
us1.vpn.goldenfrog.com
us2.vpn.goldenfrog.com
us3.vpn.goldenfrog.com
us4.vpn.goldenfrog.com
us5.vpn.goldenfrog.com
us6.vpn.goldenfrog.com
us7.vpn.goldenfrog.com
eu1.vpn.goldenfrog.com
dk1.vpn.goldenfrog.com
se1.vpn.goldenfrog.com
hk1.vpn.goldenfrog.com
uk1.vpn.goldenfrog.com

ファイルがタブ文字を区切り文字として使用する場合は、式に[[:blank:]]テキストの代わりにスペース文字を使用できます。これはタブと一致しますまたはスペース文字:

sed 's/.*[[:blank:]]//' file

cut最初に各行を反転してから、最初のフィールドを削除した結果を反転して、タブで区切られた最後のフィールドを取得することもできます。

rev file | cut -f 1 | rev

データに正確に2つのタブで区切られたフィールドがあり、そのうちの2番目のフィールドが必要な場合ははるかに簡単です。

cut -f 2 file

関連情報