我需要提取最后一个冒号之前的字符,并删除最后一行中的:
方括号。[]
我的文件结构是
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