相关疑难解决方法(0)

如何删除文件中某个模式或字符串之后的每一行的其余部分?

假设我在文本文件中有一个 URL 列表:

google.com/funny
unix.stackexchange.com/questions
isuckatunix.com/ireallydo
Run Code Online (Sandbox Code Playgroud)

我想删除“.com”之后的所有内容。

预期成绩:

google.com
unix.stackexchange.com
isuckatunix.com
Run Code Online (Sandbox Code Playgroud)

我试过

sed 's/.com*//' file.txt 
Run Code Online (Sandbox Code Playgroud)

但它也删除.com了。

sed text-processing

31
推荐指数
3
解决办法
16万
查看次数

SED:在模式匹配后删除 5 行上下的 4 行

我有休文件,其中包含以下详细信息:

define host{
        use                     generic-host            ; Name of host template to use
        host_name               ServerA_172.29.16.102
        alias                   ServerA_172.29.16.102
        address                 172.29.16.102
        check_command           check-host-alive
        max_check_attempts      3
        notification_interval   120
        notification_period     24x7
        }



define host{
        use                     generic-host            ; Name of host template to use
        host_name               ServerB_172.29.16.103
        alias                   ServerB_172.29.16.103
        address                 172.29.16.103
        check_command           check-host-alive
        max_check_attempts      3
        notification_interval   120
        notification_period     24x7
        }
Run Code Online (Sandbox Code Playgroud)

我想要什么,搜索"address 172.29.16.102"和删除 5 行上方和之后的 4 行。

我试过用 sed 跟踪但没有用

sed '$N;$N;N;/address                 172.29.16.102/,+5d' hosts
Run Code Online (Sandbox Code Playgroud)

sed text-processing

8
推荐指数
3
解决办法
2万
查看次数

grep 文件中的所有行并将行从模式匹配点写入文件

例如,一个temp.txt文件包含如下信息:

adsf on line jhkjhvjdbvjvbvbdjkvn  
qerwtt on line fdgdgdgdd  
qwqertg on line safffasffaf  
wrt on line adaddsd
Run Code Online (Sandbox Code Playgroud)

我想on line在文件的所有行中进行 grep并将行的其余部分写入另一个文件,即在temp.txt文件处理之后,新文件应包含:

on line jhkjhvjdbvjvbvbdjkvn  
on line fdgdgdgdd  
on line safffasffaf  
on line adaddsd  
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 linux 终端中做到这一点?

grep vi text-processing files

3
推荐指数
1
解决办法
3万
查看次数

直接修改现有文件以将“foo”替换为“bar”仅用于包含“baz”的行

我有一个 food.txt 文件如下:-

mangoes|foo|faa  
oranges|foo|faa  
chocolates|foo|baz  
Run Code Online (Sandbox Code Playgroud)

如果条件 baz 满足,我试图用bar替换foo。(想在这里使用正则表达式 b*z ) 目前使用下面的 sed 命令,但这不会直接修改现有文件。我也不能使用正则表达式 (b*z)。

sed '/baz/s/foo/bar/g' food.txt
Run Code Online (Sandbox Code Playgroud)

请建议一种除“sed”之外的方法来直接修改现有文件。

PS:我试过了,sed -i但我想使用一些其他命令而不是 sed。
我正在使用 mobaxterm(操作系统 - Windows)

text-processing regular-expression

3
推荐指数
2
解决办法
1457
查看次数

标签 统计

text-processing ×4

sed ×2

files ×1

grep ×1

regular-expression ×1

vi ×1