bash : 从一行中删除特定模式的字符
bash : Remove the specific pattern of characters from a line
文件a.txt的内容是:
10.39.105.16tcp(1234) ABCDEF02
10.49.105.13tcp(521) ABCDEFV01
10.19.105.12tcp(1241) ABCDEFV01
10.29.105.20tcp(1222) ABCDEF03
10.39.104.9tcp(131) ABCDEF21
10.49.104.34tcp(1512) ABCDEF22
10.89.104.120tcp(1384) ABCDEF32
如何实现如下输出:
10.39.105.10 ABCDEF02
10.49.105.13 ABCDEFV01
10.19.105.13 ABCDEFV01
10.29.105.20 ABCDEF03
10.39.104.1 ABCDEF21
10.49.104.2 ABCDEF22
10.89.104.130 ABCDEF32
如何删除上述文件每一行中的模式 tcp( * )?
你可以使用 sed:
sed 's/tcp([0-9]\+)\s\+/ /' a.txt
这也将删除 tcp(*) 之后的尾随 space,并将其替换为输出中显示的单个 space。
要更改实际文件(不仅仅是输出),请为 inplace 添加 -i 选项:
sed -i 's/tcp([0-9]\+)\s\+/ /' a.txt
根据您要实现的目标,答案可能是:
awk '{sub(/tcp(.+)/,"",)}1' file
10.39.105.16 ABCDEF02
10.49.105.13 ABCDEFV01
10.19.105.12 ABCDEFV01
10.29.105.20 ABCDEF03
10.39.104.9 ABCDEF21
10.49.104.34 ABCDEF22
10.89.104.120 ABCDEF32
文件a.txt的内容是:
10.39.105.16tcp(1234) ABCDEF02
10.49.105.13tcp(521) ABCDEFV01
10.19.105.12tcp(1241) ABCDEFV01
10.29.105.20tcp(1222) ABCDEF03
10.39.104.9tcp(131) ABCDEF21
10.49.104.34tcp(1512) ABCDEF22
10.89.104.120tcp(1384) ABCDEF32
如何实现如下输出:
10.39.105.10 ABCDEF02
10.49.105.13 ABCDEFV01
10.19.105.13 ABCDEFV01
10.29.105.20 ABCDEF03
10.39.104.1 ABCDEF21
10.49.104.2 ABCDEF22
10.89.104.130 ABCDEF32
如何删除上述文件每一行中的模式 tcp( * )?
你可以使用 sed:
sed 's/tcp([0-9]\+)\s\+/ /' a.txt
这也将删除 tcp(*) 之后的尾随 space,并将其替换为输出中显示的单个 space。
要更改实际文件(不仅仅是输出),请为 inplace 添加 -i 选项:
sed -i 's/tcp([0-9]\+)\s\+/ /' a.txt
根据您要实现的目标,答案可能是:
awk '{sub(/tcp(.+)/,"",)}1' file
10.39.105.16 ABCDEF02
10.49.105.13 ABCDEFV01
10.19.105.12 ABCDEFV01
10.29.105.20 ABCDEF03
10.39.104.9 ABCDEF21
10.49.104.34 ABCDEF22
10.89.104.120 ABCDEF32