相关疑难解决方法(0)

如何使用bash/sed脚本删除文本文件的第一行?

我需要使用bash脚本从一个巨大的文本文件中重复删除第一行.

现在我正在使用sed -i -e "1d" $FILE- 但删除大约需要一分钟.

有没有更有效的方法来实现这一目标?

bash scripting sed

517
推荐指数
12
解决办法
50万
查看次数

从文件中删除以#开头的所有行

文件中带有注释的所有行都以#.如何删除以#?开头的所有行(以及只有那些行)?#应忽略包含但不在行开头的其他行.

bash sed

164
推荐指数
6
解决办法
17万
查看次数

我需要我的sed -i命令进行就地编辑才能使用GNU sed和BSD/OSX sed

我有一个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正在砍掉一个角色,但我看不到解决方案.

macos gnu sed inplace-editing

59
推荐指数
6
解决办法
4万
查看次数

找到匹配的文本并替换下一行

我正在尝试在文件中找到一行,并用特定值替换下一行.我试过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)

linux sed

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

如何从文件中删除所有变音符号?

我有一个文件包含许多带变音符号的元音.我需要做这些替换:

  • 用a替换ā,á,ǎ和à.
  • 用e替换ē,é,ě和è.
  • 用我替换ī,í,ǐ和ì.
  • 用o替换ō,ó,ǒ和ò.
  • 用你取代ū,ú,ǔ和ù.
  • 用ü替换ǖ,ǘ,ǚ和ǜ.
  • 用A替换Â,Á,Ǎ和À.
  • 用E替换Ē,É,Ě和È.
  • 用I.替换Ī,Í,Ǐ和Ì
  • 用O替换Ō,Ó,Ǒ和Ò.
  • 用U替换Ū,Ú,Ǔ和Ù.
  • 用Ü替换Ǖ,Ǘ,Ǚ和Ǜ.

我知道我可以一次更换一个:

sed -i 's/?/a/g' ./file.txt
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来取代所有这些?

bash replace sed

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

没有给我正确的替代操作与Mac换行 - GNU sed和BSD/OSX sed之间的差异

我正在使用这个参考: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)

不知道为什么我不能让这个工作.提前致谢.

macos bsd gnu sed

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

使用Awk或Sed来处理特定行末尾的语句

我有一个我命名的文件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脚本来完成此任务(不幸的是,完整的脚本太大而无法发布).

bash awk sed

2
推荐指数
1
解决办法
423
查看次数

标签 统计

sed ×7

bash ×4

gnu ×2

macos ×2

awk ×1

bsd ×1

inplace-editing ×1

linux ×1

replace ×1

scripting ×1