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