如何获取没有后N个字符的字符串?

时间:2019-10-22 14:22:04

标签: bash awk

如果我在变量中有一个bash字符串。 如何提取/检索除最后一个字符以外的字符串,如果要提取到最后两个字符,这将多么容易?

示例:

# Removing the last character
INPUT="This is my string."
# Expected output "This is my string"

# Removing the last two characters
INPUT="This is my stringoi"
# Expected output "This is my string"

3 个答案:

答案 0 :(得分:4)

使用任何POSIX shell:

OUTPUT="${INPUT%?}"  # remove last character
OUTPUT="${INPUT%??}" # remove last two characters
                     # and so on

答案 1 :(得分:3)

示例:

INPUT="This is my string."
echo $INPUT |sed 's/.$//' # removes last character

INPUT="This is my stringoi"
echo $INPUT |sed 's/..$//' # removes last two character

答案 2 :(得分:2)

编辑:在此处添加通用解决方案。您可以在名为awk的{​​{1}}中提到要从行尾删除的字符数,然后应该可以正常工作。

remove_char


请您尝试以下。

awk -v remove_char="2" '{print substr($0,1,length($0)-remove_char)}' Input_file


第二个解决方案:使用GNU awk '{print substr($0,1,length($0)-1)}' Input_file

不使用字段分隔符
awk