Bash从字符串/行/单词中删除最后一个字符

时间:2020-01-09 10:37:24  来源:igfitidea点击:

我有一个看起来如下的文件:

foo bar tom jerry UNIX Linux

每个词和/或Linux的长度不同。仅在Linux或类似Unix的系统上,如何使用bash或ksh shell从每行中去除或删除最后一个字符?可以使用以下任何命令:

  • Bash/ksh shell替换
  • cut命令
  • head命令
  • tail命令

Bash/ksh Shell替换示例

从行或单词中删除最后一个字符的语法如下:

x="foo bar"
echo "${x%?}"

输出示例:

foo ba

%是bash参数替换运算符,可从最短的尾部(结束)模式中删除。
您可以按以下方式使用bash while循环:

#!/bin/bash
while IFS= read -r line
do
       echo "${line%?}"
       # or put updated line to a new file
       #echo "${line%?}" >> /tmp/newfile
done < "/path/to/file"

剪切命令示例

语法如下:

## if length of STRING is 3, pass 2 as  character positions 
echo "foo"| cut -c 1-2
## if length of STRING is 14, pass 13 as character positions 
echo "theitroad Linux" | cut -c 1-13