我需要一个命令来执行以下操作:原始字符串是//abc/dd/ee/file_name.sv#25,例如我需要获取字符串$ {ENV} /dd/ee/file_name.sv所以我asssumed我会做一个初始awk并使用substring来剥离// abc。然后想要跟进去除#25并预先挂起$ {ENV}
答案 0 :(得分:0)
我说
awk -F# -v env="$ENV" 'BEGIN { OFS = FS } NF > 1 { $NF = env } 1' filename
如果数据在文件中,或
echo "$data" | awk -F# -v env="$ENV" 'BEGIN { OFS = FS } NF > 1 { $NF = env } 1'
如果它在shell变量中;对我来说,这个问题并不完全清楚。
这会将每一行拆分为#
的字段,并在打印前将最后一个字段替换为$ENV
(因为env
而被称为-v env="$ENV"
)awk代码有多个字段(否则行中没有#
)。 OFS = FS
确保输出的分离方式与输入相同。
答案 1 :(得分:0)
你不需要awk:
$ ENV_VAR="foo"
$ var="aaaaaaa#24"
$ echo "${var%#*}$ENV_VAR"
aaaaaaafoo