我有一个文件,其中包含一行用户名,后面是他们的其他信息。
例如文件包含:
Clara 01 {25个信息字符} Betty 29 {25个信息字符} Edith 34 {25个信息字符} Raji 11 {25个信息字符}
所有这些都在一个非常长的行中,有许多用户名,后面跟着25个字符的信息。
现在,我想搜索Betty 29,然后删除/移除子字符串Betty 29 {25个信息字符}。也就是说,我应该如何删除Betty 29,然后接下来的25个字符。我应该如何在Linux shell脚本中做到这一点?
我读过sed命令,但我仍然无法弄清楚。我是shell脚本的新手,所以请善待我。
3条答案
按热度按时间cpjpxq1n1#
正如@Shawn所建议的
字符串
就是完成任务
谢谢大家的帮助!
zbwhf8kr2#
1.使用
readarray -d'}'
以数组形式访问文件。1.搜索以
Betty29
和unset
开头的元素。1.然后
printf '%s'
将整个"${array[@]}"
作为输出。字符串
现在我们来测试一下:
型
输出量:
型
据推测,这将删除
Betty29
的所有次。如果你只想删除第一个**并使其“更高效”,只要在找到匹配项后向for
-循环中添加一个break
即可。gj3fmq9x3#
我不会创建一个子进程(
sed
或其他),如果我也可以在bash中轻松完成的话。假设我们有
字符串
那我们可以
型
由于计算25个问号容易出错,因此另一种方法是使用正则表达式:
型