在同一行的变量前面附加文本- bash



我有这个example。text

> cat example.text
10.10.44.11 10.10.44.20 xa1-Y xa2-Y xb1-Y xb2-Y xc1-Y xc2-Y xd1-Y xd2-Y 

,我有这个命令:srxa_host_list=$(echo example.text | awk '{print $3}' | sed 's/-.*//')

输出:

echo $srxa_host_list
xa1

我需要什么:在"xa1"前添加sr文本无需创建新的代码行

echo $srxa_host_list
srxa1

解决方案1: 请使用您所显示的样品,尝试以下awk程序。我们可以用一个awk程序完成所有这些。

awk -F'[ -]' '{print "sr"$3}'  Input_file

解释:简单的解释是,将字段分隔符设置为空格,并将所有行设置为-。在主程序中打印sr字符串,后跟当前行的第三个字段,如所示输出。



解决方案2:使用awk程序的sub方法尝试以下程序。

awk '{sub(/-.*/,"");print "sr"$3}' Input_file

解释:使用sub函数从第一次出现-到最后一行替换为NULL,然后打印字符串后跟第三个字段。



3的解决方案:使用sed-E(启用ERE)选项,请尝试以下程序。

sed -E 's/^[^ ]* +[^ ]* +([^-]*)-.*/sr1/' Input_file

解释:使用sed-E选项启用ERE(扩展正则表达式)。然后在主程序中,从^[^ ]* +[^ ]* +开始匹配一个捕获组,其中匹配-之前的所有内容,然后匹配-.*,并用sr和第一个捕获组替换它。

使用sed

$ srxa_host_list="sr$(sed 's/[^-]* ([^-]*).*/1/' example.text)"
$ echo "$srxa_host_list"
srxa1

如果您需要第三个字段的值保持默认字段分隔符,您也可以在-上分割并将第一部分附加到sr

awk '{split($3, a, "-");print "sr"a[1]}' example.text

输出
srxa1

最新更新