我需要使用bash脚本从一个巨大的文本文件中重复删除第一行.
现在我正在使用sed -i -e "1d" $FILE- 但删除大约需要一分钟.
有没有更有效的方法来实现这一目标?
文件中带有注释的所有行都以#.如何删除以#?开头的所有行(以及只有那些行)?#应忽略包含但不在行开头的其他行.
我有一个makefile(在Linux上为gmake开发),我试图移植到OSX,但似乎sed不想合作.我所做的是使用GCC自动生成依赖文件,然后使用sed稍微调整一下.makefile的相关部分:
$(OBJ_DIR)/%.d: $(SRC_DIR)/%.cpp
$(CPPC) -MM -MD $< -o $@
sed -i 's|\(.*\)\.o:|$(OBJ_DIR)/\1.o $(OBJ_DIR)/\1.d $(TEST_OBJ_DIR)/\1_utest.o:|' $@
Run Code Online (Sandbox Code Playgroud)
虽然这在GNU/Linux下没有遇到麻烦,但在尝试构建OSX时会出现如下错误:
sed: 1: "test/obj/equipmentConta ...": undefined label 'est/obj/equipmentContainer_utest.d'
sed: 1: "test/obj/dice_utest.d": undefined label 'est/obj/dice_utest.d'
sed: 1: "test/obj/color-string_u ...": undefined label 'est/obj/color-string_utest.d'
Run Code Online (Sandbox Code Playgroud)
看起来sed正在砍掉一个角色,但我看不到解决方案.
我正在尝试在文件中找到一行,并用特定值替换下一行.我试过sed,但似乎不喜欢\n.怎么办呢?
该文件如下所示:
<key>ConnectionString</key>
<string>anything_could_be_here</string>
Run Code Online (Sandbox Code Playgroud)
我想把它改成这个
<key>ConnectionString</key>
<string>changed_value</string>
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
sed -i '' "s/<key>ConnectionString<\/key>\n<string><\/string>/<key>ConnectionString<\/key>\n<string>replaced_text<\/string>/g" /path/to/file
Run Code Online (Sandbox Code Playgroud) 我有一个文件包含许多带变音符号的元音.我需要做这些替换:
我知道我可以一次更换一个:
sed -i 's/?/a/g' ./file.txt
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法来取代所有这些?
我正在使用这个参考:sed help:匹配和替换文字"\n"(不是换行符)
我有一个文件"test1.txt",其中包含一个字符串hello \ngoodbye
我使用此命令搜索并用实际的换行符替换"\n":
sed -i '' 's/\\n/\n/g' test1.txt
Run Code Online (Sandbox Code Playgroud)
但结果是:hellongoodbye.它只是将"\n"替换为"n"而不是实际的新行.这与/ t相同,它将留下"t"而不是选项卡.
''是针对MAC中未定义的错误:http://mpdaugherty.wordpress.com/2010/05/27/difference-with-sed-in-place-editing-on-mac-os-x-vs-linux /
更新:
我已经尝试了@ hek2mgl建议的两个命令:
sed -i 's/\\n/\n/g' test.txt
# Or:
sed -i'' 's/\\n/\n/g' test.txt
Run Code Online (Sandbox Code Playgroud)
虽然它们可能适用于Linux,但使用MAC OS时出现以下错误:
sed: 1: "test1.txt": undefined label 'est1.txt'
Run Code Online (Sandbox Code Playgroud)
不知道为什么我不能让这个工作.提前致谢.
我有一个我命名的文件poscar1.cif,我想在此文件的特定行插入变量的内容.
例如,line 24,当前读取:
_cell_length_a
Run Code Online (Sandbox Code Playgroud)
我想添加我的变量的内容a(在我的函数中定义a=5.3827),这样该行现在读取:
_cell_length_a 5.3827
Run Code Online (Sandbox Code Playgroud)
有没有办法用sed或awk做到这一点?我正在使用bash脚本来完成此任务(不幸的是,完整的脚本太大而无法发布).