Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk替换文本文件中的一行并保存它_Awk_Sed - Fatal编程技术网

awk替换文本文件中的一行并保存它

awk替换文本文件中的一行并保存它,awk,sed,Awk,Sed,我想打开一个包含500个IP地址列表的文本文件。我想对其中一行进行以下更改并保存文件。使用awk或sed可以这样做吗 当前行: 100.72.78.46:1900 变化: 100.72.78.46:1800 您可以通过以下方式实现这一点: sed -ie 's/100.72.78.46:1900/100.72.78.46:1800/' file.txt i选项将更新原始文件,并创建备份文件。这将仅编辑图案的第一个匹配项。如果要替换所有匹配的模式,请在最后一个/ 但是,这种解决方案(如注释中

我想打开一个包含500个IP地址列表的文本文件。我想对其中一行进行以下更改并保存文件。使用
awk
sed
可以这样做吗

当前行:

100.72.78.46:1900
变化:

100.72.78.46:1800

您可以通过以下方式实现这一点:

sed -ie 's/100.72.78.46:1900/100.72.78.46:1800/' file.txt
i
选项将更新原始文件,并创建备份文件。这将仅编辑图案的第一个匹配项。如果要替换所有匹配的模式,请在最后一个
/

但是,这种解决方案(如注释中所指出的)在许多其他情况下都会失败,例如
72100372578146:190032
,它将转换为
72100.72.78.46:180032

为了避免这种情况,您必须进行精确匹配,并且
视为特殊字符(请参阅):

其中
[[[::]]
将为您提供精确匹配

最后,我还意识到,如果每行只有一个IP地址,还可以在行首和行尾使用特殊字符
^$
,以防止错误替换:

sed  -ie 's/^100\.72\.78\.46:1900$/100.72.78.46:1800/g' file.txt

您可以通过以下方式实现这一点:

sed -ie 's/100.72.78.46:1900/100.72.78.46:1800/' file.txt
i
选项将更新原始文件,并创建备份文件。这将仅编辑图案的第一个匹配项。如果要替换所有匹配的模式,请在最后一个
/

但是,这种解决方案(如注释中所指出的)在许多其他情况下都会失败,例如
72100372578146:190032
,它将转换为
72100.72.78.46:180032

为了避免这种情况,您必须进行精确匹配,并且
视为特殊字符(请参阅):

其中
[[[::]]
将为您提供精确匹配

最后,我还意识到,如果每行只有一个IP地址,还可以在行首和行尾使用特殊字符
^$
,以防止错误替换:

sed  -ie 's/^100\.72\.78\.46:1900$/100.72.78.46:1800/g' file.txt

关于操纵文本的任何“是否可以用awk这样做”问题的答案的可能重复是“是”。请阅读。关于操纵文本的任何“是否可以用awk这样做”问题的答案可能重复为“是”。请阅读。考虑到各种输入文件内容,该操作将失败。例如,它将
72100372578146:190032
转换为
72100.72.78.46:180032
。查找/更改您想要的文本总是很容易的,但不查找/更改您不想要的文本却要困难得多。在给定一些小样本输入的情况下,生成您期望的输出的脚本是找到解决方案的起点,而不是终点。在发布示例输入/输出时,考虑您认为可能难以处理且不希望被发现/更改的案例非常重要,而不仅仅是一个晴天案例。是的,您完全正确。我将编辑我的回复,使其在更一般的意义上起作用。谢谢考虑到各种输入文件内容,该操作将失败。例如,它将
72100372578146:190032
转换为
72100.72.78.46:180032
。查找/更改您想要的文本总是很容易的,但不查找/更改您不想要的文本却要困难得多。在给定一些小样本输入的情况下,生成您期望的输出的脚本是找到解决方案的起点,而不是终点。在发布示例输入/输出时,考虑您认为可能难以处理且不希望被发现/更改的案例非常重要,而不仅仅是一个晴天案例。是的,您完全正确。我将编辑我的回复,使其在更一般的意义上起作用。谢谢