标签: sed

如何从文件中的每一行删除前导空格?

我有一个看起来像这样的文件:

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)

unix awk grep sed

63
推荐指数
4
解决办法
12万
查看次数

'+'(一次或多次出现)不使用'sed'命令

我试图通过去除不必要的空格,空行以及括号与它们之间的空间平衡来优化我的代码,所以:

    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)

macos bash sed

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

我需要我的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删除不包含特定字符串的行

我是新手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

sed

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

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)

linux bash sed

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

如何在unix中删除文件的最后一个字符?

说我有一些任意的多行文本文件:

sometext
moretext
lastline
Run Code Online (Sandbox Code Playgroud)

如何在不使文本文件无效的情况下仅删除文件的最后一个字符(e,而不是换行符或null)?

unix linux bash sed

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

使用sed删除两个匹配模式之间的所有行

我有一个类似的文件:

# 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)

能不能请你解释一下吗?

regex sed

57
推荐指数
5
解决办法
4万
查看次数

删除Unix上的部分路径

我正在尝试删除字符串中的部分路径.我有路径:

/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 作为字符串的第二部分,我显然做错了...也许有一种更简单的方法?

unix shell scripting sed

57
推荐指数
5
解决办法
7万
查看次数

sed - 注释匹配特定字符串的行和尚未注释掉的行

我有以下测试文件

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)

我有什么想法可以达到这个目的吗?

regex unix linux sed

57
推荐指数
4
解决办法
7万
查看次数

使用sed删除Linux中文本文件任意一行的前五个字符

我需要一个单行删除文本文件的任何行上的前五个字符.我怎么能用sed做到这一点?

unix linux sed

56
推荐指数
4
解决办法
10万
查看次数

标签 统计

sed ×10

unix ×5

linux ×4

bash ×3

macos ×2

regex ×2

awk ×1

gnu ×1

grep ×1

inplace-editing ×1

scripting ×1

shell ×1