【问题标题】:Shell script to select particular letters in a word and print that word ignoring other letters in linuxShell脚本选择单词中的特定字母并打印该单词而忽略Linux中的其他字母
【发布时间】:2020-01-22 04:39:04
【问题描述】:

我想要一个脚本来选择单词之间的字母并打印该单词而忽略多个文件中的其他字母。

我有同名的文件,但中间名不同,所以我想选择那个词并列出它。

我有

backup-aniketn-05-34-23-Fri-Sep-2019.tar.gz
backup-checkte-05-38-18-Fri-Sep-2019.tar.gz
backup-aniketi-06-03-11-Fri-Sep-2019.tar.gz
backup-aniketi01-10-45-31-Sat-Sep-2019.tar.gz

我想选择两个连字符之间的名称并列出忽略其余单词

aniketn 
checkte 
aniketi 
aniketi01

我正在尝试获取此输出。 我尝试使用 cut 命令,但没有帮助搜索脚本 请帮忙。

谢谢!

【问题讨论】:

标签: linux shell scripting centos7


【解决方案1】:

您可以简单地使用以下两个命令从 name 中获取第二个元素:

cut -d- -f2
awk -F'-' '{print $2}'

cut 命令中-d 用于选择分隔符,-f2 将打印第二个单词。

awk 命令中-F 用于选择分隔符,print $2 将打印第二个单词。

【讨论】:

  • 它仅适用于具有特定字母的名称,如果我们在之后添加另一个它会给出空白输出。
  • @AniketMahindrakar 你能给我举个例子吗?这应该从所有案例的开头获取第二个单词。
  • 如果名称是“backup-aniketi-06-03-11-Fri-Sep-2019.tar.gz”,那么它会给出输出,但如果名称后面有字母或数字名称如“backup-aniketi0-06-03-11-Fri-Sep-2019.tar.gz”或“backup-aniketi01-06-03-11-Fri-Sep-2019.tar.gz”它给出空白输出。我认为它选择了字母的限制。
  • @AniketMahindrakar 所以在这两种情况下,我的输出都是 aniketi0 和 aniketi01 这是因为这两个命令都使用分隔符“-”并获取第二个元素。
  • [root@localhost /]# cut -d- -f2 /list.txt > final.txt [root@localhost /]# cat final.txt total 32 rw rw rw rw rw [root@本地主机/]#
猜你喜欢
  • 1970-01-01
  • 2015-08-16
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 2021-04-05
  • 2020-06-29
  • 2022-12-13
相关资源
最近更新 更多