草庐IT

linux - sed -e 's/^M/d' 不工作

一个非常常见的问题,但我无法使用sed解决它。我有一个脚本文件(一批命令)说myfile.txt立即执行以创建一个列表。现在,当我执行批处理操作时,我的命令行界面清楚地显示它无法解析命令,因为换行符^M在每行的末尾加起来。我认为sed是最好的方法。我试过:sed-e's/^M/d'myfile.txt>myfile1.txtmvmyfile1.txtmyfile.txt它没有用。我也试过这个但没有用:sed-e's/^M//g'myfile.txt>myfile1.txtmvmyfile1.txtmyfile.txt然后我想可能是sed将它作为行首的M字符,因此没有结果。所以我尝试了:

linux - 如何使用 sed\awk 从文件中删除行?

我有文件,有行,包含ip和网络掩码a.b.c.d/24w.x.y.z/32ETC如何删除删除特定行?我在用sed-ie"s#a.b.c.d/24##g"%filname%但删除后文件中是一个空字符串。它应该在脚本中运行,以ip作为参数,也可以在sh下的freebsd中运行。 最佳答案 Sed解决方案sed-i'//d'data.txt-i选项将更改原始文件。Awk解决方案awk'!//'data.txt 关于linux-如何使用sed\awk从文件中删除行?,我们在StackOverfl

linux - sed 替换为十六进制

UTF-8文件test.txt:AAAAAAAAAAAAAA十六进制是41414141414141414141seds/A/B/gtest.txt有效seds/\x41/B/gtest.txt不工作有些字符是不可打印的,所以我必须使用它们的十六进制,A只是一个例子。 最佳答案 shell对其进行预处理,使用单引号。sed's/\x41/B/g'test.txtecho-e\x41#x41echo-e'\x41'#A 关于linux-sed替换为十六进制,我们在StackOverflow上

linux - 使用sed删除文件中空行的命令是什么?

什么是sed命令来删除文件中的空行。删除文件夹中空文件的命令(sed命令?)是什么? 最佳答案 你必须使用'd'来删除。Ex:sed-i'/^$/d'test-i-用于影响文件。^-是行的开始$-是行尾d-如果有空行则删除希望对您有所帮助。 关于linux-使用sed删除文件中空行的命令是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10409909/

linux - grep 和 sed 文件名中有空格

目前,我有grep-irl$schema$WORKDIR/|xargssed-i's/'"$schema"'/EXI1/gI'这不适用于带空格的文件名。任何想法,如何递归搜索和替换所有文件?谢谢 最佳答案 将-Z(又名--null)标志添加到grep,并将-0(也称为--null)标志到xargs。这将输出以NUL结尾的文件名,并告诉xargs读取以NUL结尾的参数。例如。grep-irlZ$schema$WORKDIR/|xargs-0sed-i's/'"$schema"'/EXI1/gI'

linux - 用于 sed 替换的转义文件名

我该如何解决这个问题:abc="a/b/c";echoporc|sed-r"s/^/$abc/"sed:-eexpression#1,char7:unknownoptionto`s'变量$abc的替换是正确的,但问题是$abc包含斜杠,这会混淆sed。我能以某种方式逃避这些斜杠吗? 最佳答案 请注意sed(1)允许您为s///分隔符使用不同的字符:$abc="a/b/c"$echoporc|sed-r"s|^|$abc|"a/b/cporc$当然,如果你走这条路,你需要确保你选择的分隔符没有在你输入的其他地方使用。

linux - sed - 在文件的最后一行之前管道化一个字符串

我有一个打印单行的命令。我想将这一行添加/通过管道传输到一个文件中,就在它的最后一行之上。my_cmd|sed-i'$i'test我只是在最后一行上方的正确位置找到了一个空行。我注意到,当我将任何字符串添加为'$ifoo'时,“foo”会打印在正确的位置,但我希望打印管道线。如何使用STDIN而不是“foo”? 最佳答案 这应该可以解决问题:sed-i"\$i$(cmd)"file测试:kent$catf12345kent$sed-i"\$i$(date)"fkent$catf1234TueSep3014:10:02CEST2014

regex - sed 替换文件的倒数第二行

我想替换文件的倒数第二行,我知道$用于最后一行但不知道如何说第二行。parallel({ignore(FAILURE){build("Build2Test",BUILDFILE:"",WARFILE:"http://maven.example.com/130602.0.war",STUDY:"UK",BUG:"33323")}},)我想用}}替换}},简而言之我想删除,逗号但是这个文件有很多其他代码所以我不能使用模式匹配,我需要使用文件末尾的第二行。 最佳答案 以下应该有效(请注意,在某些系统上您可能需要删除所有评论):sed'1{

regex - 使用基于 sed/awk 的 linux 替换字符串

我想替换这个#!/usr/bin/envbash有了这个#!/bin/bash我尝试了两种方法方法一original_str="#!/usr/bin/envbash"replace_str="#!/bin/bash"seds~${original_str}~${replace_str}~filename方法二line=`grep-n"/usr/bin"filename`awkNR==${line}{sub("#!/usr/bin/envbash","#!/bin/bash")}但是他们两个都不行。 最佳答案 您不能在BASH的双引号

linux - 使用 sed,行切割提取 sql 插入

我一直在stackoverflow上阅读有关使用sed从sql转储中提取数据的信息,更准确地说,最终目的是为特定表提取插入,以便仅恢复表。我正在使用这个:sed-n'/LOCKTABLES`TABLE_NAME`/,/UNLOCKTABLES/p'dump.sql>output.sql我遇到的问题是我们在1行上插入了超过50Mb长的内容,因此在提取插入内容时,输出会在行尾之前被截断。喜欢:......(43458,'0Y25565137SEOEJ','001','PREPAR',1330525937741,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)