在同一行内的变量前面附加文本 - bash
Append text in front of variable within the same line - 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 }' | sed 's/-.*//')
输出:
echo $srxa_host_list
xa1
我需要什么:在“xa1”之前附加 sr 文本,而不创建新的代码行。
echo $srxa_host_list
srxa1
第一个解决方案: 使用您显示的示例,请尝试遵循 awk
程序。我们可以用一个 awk
程序完成所有这些。
awk -F'[ -]' '{print "sr"}' Input_file
解释: 简单的解释就是,将所有字段分隔符设置为 space 和 -
线。在主程序中打印 sr
字符串,后跟当前行的第 3 个字段,如输出所示。
第二个解决方案:使用awk
程序的sub
方法尝试下面的程序。
awk '{sub(/-.*/,"");print "sr"}' Input_file
解释: 使用 sub
函数替换从第一次出现的 -
到最后一行使用 NULL 然后打印 str 字符串,后跟第三个字段。
第三个解决方案: 使用 sed
和 -E
(启用 ERE)选项请尝试以下程序。
sed -E 's/^[^ ]* +[^ ]* +([^-]*)-.*/sr/' Input_file
说明: 使用 sed
的 -E
选项启用 ERE(扩展正则表达式)。然后在主程序中从 ^[^ ]* +[^ ]* +
开始匹配,然后是一个捕获组,其中匹配 -
之前的所有内容,然后是 -.*
并将其替换为 sr
和第一个捕获组。
使用sed
$ srxa_host_list="sr$(sed 's/[^-]* \([^-]*\).*//' example.text)"
$ echo "$srxa_host_list"
srxa1
如果您需要保留默认字段分隔符的第 3 个字段的值,您还可以拆分 -
并将第一部分附加到 sr
awk '{split(, a, "-");print "sr"a[1]}' example.text
输出
srxa1
我有这个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 }' | sed 's/-.*//')
输出:
echo $srxa_host_list
xa1
我需要什么:在“xa1”之前附加 sr 文本,而不创建新的代码行。
echo $srxa_host_list
srxa1
第一个解决方案: 使用您显示的示例,请尝试遵循 awk
程序。我们可以用一个 awk
程序完成所有这些。
awk -F'[ -]' '{print "sr"}' Input_file
解释: 简单的解释就是,将所有字段分隔符设置为 space 和 -
线。在主程序中打印 sr
字符串,后跟当前行的第 3 个字段,如输出所示。
第二个解决方案:使用awk
程序的sub
方法尝试下面的程序。
awk '{sub(/-.*/,"");print "sr"}' Input_file
解释: 使用 sub
函数替换从第一次出现的 -
到最后一行使用 NULL 然后打印 str 字符串,后跟第三个字段。
第三个解决方案: 使用 sed
和 -E
(启用 ERE)选项请尝试以下程序。
sed -E 's/^[^ ]* +[^ ]* +([^-]*)-.*/sr/' Input_file
说明: 使用 sed
的 -E
选项启用 ERE(扩展正则表达式)。然后在主程序中从 ^[^ ]* +[^ ]* +
开始匹配,然后是一个捕获组,其中匹配 -
之前的所有内容,然后是 -.*
并将其替换为 sr
和第一个捕获组。
使用sed
$ srxa_host_list="sr$(sed 's/[^-]* \([^-]*\).*//' example.text)"
$ echo "$srxa_host_list"
srxa1
如果您需要保留默认字段分隔符的第 3 个字段的值,您还可以拆分 -
并将第一部分附加到 sr
awk '{split(, a, "-");print "sr"a[1]}' example.text
输出
srxa1