【问题标题】:How to crop a word [closed]如何裁剪一个单词[关闭]
【发布时间】:2015-06-26 13:01:44
【问题描述】:

我有这个输入列表:

imalex
thislara
heiscarl

如何获得:

alex
lara
carl

【问题讨论】:

  • 你如何定义“作物”?目前唯一可能的解决方案是echo "alex"
  • 这是一个考虑不周的问题,因为echo "alex\nlara\ncarl" 和大约 100 个其他愚蠢的“解决方案”会产生预期的输出。尽管它在您的脑海中可能很明显,但您必须付出一点努力来解释转换的基础,以便我们获得相同的信息。

标签: bash awk


【解决方案1】:

grep

使用 获取最后四个字符:

grep -o '.\{4\}$' file

-o 选项确保只打印匹配的部分。

sed

使用我们可以得到类似的结果:

sed 's/.*\(.\{4\}\)$/\1/' a

这里我们捕获最后四位数字并将每一行替换为最后四位数字。它们被捕获在一个组中\( \) 并插入\1

阅读和跟踪

我们还可以使用-c 选项获取每行的最后五个字符(包括换行符)。我们使用 对每一行执行此操作。

while read line; do 
    tail -c 5 <<< $line
done < file

【讨论】:

  • 这可能是解决方案,但 OP 没有获得足够的信息来了解它。最好等他更新详细信息,否则你可以将他的问题的答案发布到your effort,而不会收到任何反馈。
  • 没错,我可能有点太仓促了。要么是他想要的最后四个字符,要么是iamheissheis。但你是对的,不清楚 OP 在问什么,我想得太快了!
【解决方案2】:

使用子串算术的2个答案

重击:

while read word; do
    echo "${word:${#word}-4}"
done <<<"$list"

awk

echo "$list" | awk '{print substr($NF, length($NF)-4+1)}'

【讨论】:

  • 我喜欢用 bash 替换的答案,真聪明!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 2017-09-05
  • 2018-10-19
  • 1970-01-01
  • 2021-06-07
  • 2011-12-15
  • 2015-12-08
相关资源
最近更新 更多