最後のコロンの前の文字を抽出します。

最後のコロンの前の文字を抽出します。

最後のコロンの前の文字を抽出し、最後の行の角:かっこを削除する必要があります。[]私のファイル構造は

256.XXX.XXX.X:20234
214.XXX.XXX.X:7249
[2200:XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX]:46288

次の形式の出力ファイルが必要です。

256.XXX.XXX.X
214.XXX.XXX.X
2200:XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX

答え1

最後のコロンの後のすべての内容を削除してから、どこにでも残っている括弧を削除します。

sed 's/:[^:]*$//; s/[][]//g'

または

sed 's/\(.*\):.*/\1/; s/[][]//g'

.*(ここで最初のものは貪欲で、:できるだけ多くのsを飲み込むという事実を使用します)。

答え2

これは、提供された例のように、最後の「コロン」の前のすべての文字を抽出し、角括弧[]を削除します。

rev <yourfile.txt | cut -d: -f2- | rev | tr -d '[]'

yourfile.txt をファイル名に変更したり、標準<yourfile.txt出力を読み取ったりするには、単語を削除します。

答え3

シェルのみ:

while IFS= read -r line; do
    tmp=${line%:*}               # remove last colon and following chars
    tmp=${tmp#"["}               # remove leading open bracket
    result=${tmp%"]"}            # remove trailing close bracket
    printf "%s\n" "$result"
done < file

答え4

注文する:

awk -F ":" 'OFS=":"{$NF="";print $0}' filename | sed "s/:$//g"| sed "s/^\[//g"|sed "s/\]//g"

出力

256.XXX.XXX.X
214.XXX.XXX.X
2200:XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX

関連情報