bash - 打印字符串中的字符
问题描述
我有一个包含单词的文件-abfiuf.com abdbhj.co.in abcahjkl.org.in.2 abciuf zasdg cbhjk asjk
包括其他内容。我的要求是-以abfiuf开头的词,
abdbhj, abcahjkl, abciuf ,.... cut the two character from middle like below.
abfiuf - fi
abdbhj - db
abjcahjkl - ca
abciuf - ci
我在下面尝试过-首先要获得匹配的单词-
cat /etc/xyz.txt|grep -Eo \<(abfiuf|abdbhj|abjcahjkl|abciuf)\S*'|cut -f1 -d"."
但无法从 words 中匹配 "fi" 、 "db" 、 "ca" 、 "ci" 前后进行剪切。
尝试使用 sed 命令 - sed 's/^.*fi/fi/'
-> 仅适用于之前删除的一个单词。但是如何从单词中剪切多个字符之前和之后?
解决方案
EDIT2:由于 OP 告诉他/她只想打印匹配的字符串值,只有在这种情况下,所以应该尝试遵循。
awk 'match($0,/fi|db|ca|ci/){print substr($0,RSTART,RLENGTH)}' Input_file
或者,如果您想打印一条带有未找到任何匹配项的行号的消息,请尝试以下操作。
awk 'match($0,/fi|db|ca|ci/){print substr($0,RSTART,RLENGTH);next} {print "Line number " FNR " is NOT having any matching value in it."}' Input_file
如果是这种情况,假设您只需要打印第 3 和第 4 个字符,请尝试以下操作。
awk '{print substr($0,3,2)}' Input_file
编辑:现在我假设您不想硬编码要从行打印的位置,如果是这种情况,然后尝试遵循,它将首先计算行的长度并从其中间字母开始打印 2 个字符。
awk '{len=length($0)/2;print substr($0,len,2)}' Input_file
推荐阅读
- router - 如何在 airtel 4g 热点设备中禁用睡眠模式?
- sql - 用于形成嵌套 JSON 作为输出的 SQL 脚本
- reactjs - 即使图像路径正确,React-Native -Elements Avatar 也不会渲染并仅显示灰色背景
- php - laravel 7中的Ajax数据表
- angular - 如何为多选控件动态添加[formcontrol]?
- mysql - 如何使用 TypeORM 为用户、组和组元数据创建关系?
- python - 如何在 nodejs 应用程序中使用 python 库
- android - 通过循环获取所有firebase数据
- python - 将值分配给来自 2 个不同文件的字典
- python - GUI 屏幕中的 print() 输出