用于输出包含来自平面文件的不同匹配字符串的字符串的脚本

时间:2013-10-24 15:15:18

标签: linux shell unix

我需要一个从平面文件读取的脚本,并在该行上有匹配字符串时输出该行的第一个字符串。

例如。

文件'servers.txt'包含:

Server1:12.345.678.99:servertest99.test.com
Server2:12.345.678.98:servertest98.test.com
Server3:12.345.678.97:servertest97.test.com

命令:

# ./script.sh -i 12.345.678.99
# Server1

#./script.sh -h servertest98.test.com
# Server2

我被困了......谢谢!

2 个答案:

答案 0 :(得分:2)

使用awk,您可以说:

awk -F: '$2~/pattern_to_match/{print $1}' filename

例如,说

awk -F: '$2~/12.345.678.99/{print $1}' inputfile

会导致

Server1

使用sed,您可以说:

sed -nr '/pattern/s/(\w+).*/\1/p' inputfile

答案 1 :(得分:0)

编写一个名为script.sh的脚本

    grep $1 servers.txt| cut -f1 -d":"

运行如下:

chmod + x script.sh

./ script.sh pattern

e.g。 ./script.sh 12.345.678.99