使用awk删除特定的最后一个字符

时间:2015-04-17 05:12:40

标签: awk

我需要一个命令来执行以下操作:原始字符串是//abc/dd/ee/file_name.sv#25,例如我需要获取字符串$ {ENV} /dd/ee/file_name.sv所以我asssumed我会做一个初始awk并使用substring来剥离// abc。然后想要跟进去除#25并预先挂起$ {ENV}

2 个答案:

答案 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