我有一个看起来像这样的文件:
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样(删除缩进):
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < …Run Code Online (Sandbox Code Playgroud) 我试图通过去除不必要的空格,空行以及括号与它们之间的空间平衡来优化我的代码,所以:
int a = 4;
if ((a==4) || (b==5))
a++ ;
Run Code Online (Sandbox Code Playgroud)
应改为:
int a = 4;
if ( (a==4) || (b==5) )
a++ ;
Run Code Online (Sandbox Code Playgroud)
它适用于括号和空行.但是,它会忘记将多个空格减少到一个空格:
int a = 4;
if ( (a==4) || (b==5) )
a++ ;
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
#!/bin/bash
# Script to refine code
#
filename=read.txt
sed 's/((/( (/g' $filename > new.txt
mv new.txt $filename
sed 's/))/) )/g' $filename > new.txt
mv new.txt $filename
sed 's/ +/ /g' $filename > new.txt
mv new.txt $filename
sed '/^$/d' $filename > new.txt
mv …Run Code Online (Sandbox Code Playgroud) 我有一个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,我有以下问题.在这个例子中:
some text here
blah blah 123
another new line
some other text as well
another line
Run Code Online (Sandbox Code Playgroud)
我想删除除包含字符串'text' 和字符串'blah'的那些行之外的所有行,所以我的输出文件如下所示:
some text here
blah blah 123
some other text as well
Run Code Online (Sandbox Code Playgroud)
任何提示如何使用sed?
我在开头有一行空格,例如"Hello world".我想将此行插入文件中的特定行.例如,将"hello world"插入下一个文件
hello
world
Run Code Online (Sandbox Code Playgroud)
结果:
hello
hello world
world
Run Code Online (Sandbox Code Playgroud)
我正在使用这个sed脚本:
sed -i "${line} i ${text}" $file
Run Code Online (Sandbox Code Playgroud)
问题是我得到的新线路没有空格:
hello
hello world
world
Run Code Online (Sandbox Code Playgroud) 说我有一些任意的多行文本文件:
sometext
moretext
lastline
Run Code Online (Sandbox Code Playgroud)
如何在不使文本文件无效的情况下仅删除文件的最后一个字符(e,而不是换行符或null)?
我有一个类似的文件:
# ID 1
blah blah
blah blah
$ description 1
blah blah
# ID 2
blah
$ description 2
blah blah
blah blah
Run Code Online (Sandbox Code Playgroud)
如何使用sed命令删除#和$线之间的所有行?结果将变为:
# ID 1
$ description 1
blah blah
# ID 2
$ description 2
blah blah
blah blah
Run Code Online (Sandbox Code Playgroud)
能不能请你解释一下吗?
我正在尝试删除字符串中的部分路径.我有路径:
/path/to/file/drive/file/path/
Run Code Online (Sandbox Code Playgroud)
我想删除第一部分/path/to/file/drive并生成输出:
file/path/
Run Code Online (Sandbox Code Playgroud)
注意:我在while循环中有几个路径,/path/to/file/drive所有路径都相同,但我只是在寻找删除所需字符串的"方法".
我找到了一些例子,但我无法让它们起作用:
echo /path/to/file/drive/file/path/ | sed 's:/path/to/file/drive:\2:'
echo /path/to/file/drive/file/path/ | sed 's:/path/to/file/drive:2'
Run Code Online (Sandbox Code Playgroud)
\2 作为字符串的第二部分,我显然做错了...也许有一种更简单的方法?
我有以下测试文件
AAA
BBB
CCC
Run Code Online (Sandbox Code Playgroud)
使用以下sed我可以注释掉BBB线.
# sed -e '/BBB/s/^/#/g' -i file
Run Code Online (Sandbox Code Playgroud)
如果它在开头还没有#,我只想评论该行.
# sed -e '/^#/! /BBB/s/^/#/g' file
sed: -e expression #1, char 7: unknown command: `/'
Run Code Online (Sandbox Code Playgroud)
我有什么想法可以达到这个目的吗?
我需要一个单行删除文本文件的任何行上的前五个字符.我怎么能用sed做到这一点?