标签: sed

如何使用sed提取版本号?

我试图找到最好的正则表达式来从字符串中提取版本号。例如:

 echo "Version 1.2.4.1 (release mode)" | sed -ne 's/.*\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/p'
Run Code Online (Sandbox Code Playgroud)

这里的问题是它只有在版本号为“abcd”格式时才有效。如果有人决定添加或删除一个数字(“abcde”、“abc”),它就会中断。所以我想分解正则表达式并告诉 sed 我想要:

(1 个或多个数字后跟一个点)x 1 次或更多次,后跟一个数字。

我找不到如何“分组”“1 个或多个数字后跟一个点”,所以我可以告诉我至少需要一次该模式。我试过这个,但它不起作用:

\([0-9]\+\.\)\+
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

regex sed

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

perl - 将 sed 转换为 perl

以下命令在 Solaris 上工作正常(仅当最后一个字符为 ":" 时才删除行)

 sed -e '/:$/d' < foo > foo.new
Run Code Online (Sandbox Code Playgroud)

如何在 perl 中做同样的事情?(原因是因为我不想创建一个新文件)

  perl -i -pe 's/:$/d' foo
  Substitution replacement not terminated at -e line 1.
Run Code Online (Sandbox Code Playgroud)

perl sed solaris

5
推荐指数
1
解决办法
3180
查看次数

sed 如何从文件中获取模式

我有两个文件,一个包含模式列表,另一个需要根据这些模式进行更改。到目前为止,我一直在尝试

cat patterns.txt| xargs -n1| sed 's/patternfromfile/subtitution/'
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将 xargs 输入到 's/here//'

谢谢

linux sed bash-scripting

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

Linux/Bash:注释与模式匹配的每一行

sed至少可以说对我来说是陌生的。我想遍历一个 C 项目树并注释掉调用函数的每一行LogMsg()。可以实现以下目标的东西:

foreach: line within *.c
  if: line contains "LogMsg"
    prepend "//"
Run Code Online (Sandbox Code Playgroud)

或者。另外,我想看看我是否可以实现相反的目标,尽管我认为这可能会更困难。

我觉得这sed是完成这项工作的合适工具,但我不是批处理文本文件编辑方面的专家。有什么帮助吗?

linux bash sed c

5
推荐指数
1
解决办法
2347
查看次数

用另一个文件的内容替换文件中的关键字的shell脚本

我将创建一个 .sh 以使用其他文件的内容替换文件中的特定关键字。

  • template.html 包含一个唯一的字符串“ PLACEHOLDER
  • 它必须替换为文件“contents.html”的内容

sed 可用于替换关键字:

value="hello superuser"
sed -e "s/__PLACEHOLDER__/${value}/g" template.html > page.html
Run Code Online (Sandbox Code Playgroud)

所以我尝试了以下方法:

value=$(<contents.html)
sed -e "s/__PLACEHOLDER__/${value}/g" template.html > page.html
Run Code Online (Sandbox Code Playgroud)

并收到以下错误消息:替代模式内未转义的换行符

请问这种情况怎么处理?

谢谢!

shell sed sh find-and-replace

5
推荐指数
1
解决办法
4870
查看次数

如何在不等待整行的情况下为程序输出添加一个字符串?

我有一个使用 SSH 在远程服务器上运行命令的脚本。我想将字符串添加Remote:到输出的每一行,但我不希望每一行都被延迟,直到整行可用。这是我的命令的输出:

$ myproject-db-push my_database_name
从数据库导出...完成
归档数据...完成
上传档案到远程...完成
在远程运行安装脚本
远程:将存档解压缩到临时目录...完成
远程:使用数据库:my_database_name
远程:删除集合:
远程:- my_collection_foo
远程:- my_collection_bar
远程:导入新数据...完成

在这种情况下,我是这样使用的sed

echo "$INSTALLCMD" | ssh -T "deploy@$SERVER" | sed -u "s/^/Remote: /"
Run Code Online (Sandbox Code Playgroud)

问题是,正如我所解释的,没有部分行打印到屏幕上。如果我移除| sed零件,它会按预期工作。首先是这样写的:

正在导入新数据... 

几秒钟后,该行完成:

正在导入新数据...完成

我假设sed只能逐行工作。我尝试将其设置为无缓冲,但它仍然等待整行。有没有另一种方法来实现这一点?

bash sed sh shell-script

5
推荐指数
1
解决办法
485
查看次数

grep -l 输出带空格的文件名

我想循环文件

for f in `grep -rsl "foo" . `: do sed -i -- "s/foo/bar/g" $f; done;

但由于文件名包含空格,因此只要找到空格,就会拆分文件名。

如何将文件名及其空格传递给do块?

bash grep path sed

5
推荐指数
1
解决办法
2385
查看次数

如何用换行符替换换行符?

使用sed到包含某些字符适用于字符串常量使用使文字很简单:

sed "s/\\\\/\\\\\\\\/g"
sed "s/\\\"/\\\\\\\"/g"
Run Code Online (Sandbox Code Playgroud)

但是如何对包含换行符的文本文件做类似的事情呢?

awk sed

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

使用命令行工具重命名 CSV 标头

给定一个 CSV 文件,

h1 h2 h3
a  b  c
z  x  b
Run Code Online (Sandbox Code Playgroud)

如何使用命令行工具将第一个标头重命名为One第三个标头Three,即

One h2 Three
a   b  c
z   x  b
Run Code Online (Sandbox Code Playgroud)

linux unix csv awk sed

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

在特定字符串之前将文本文件的内容添加到其他文本文件的中间

我正在尝试将文本文件的内容添加到其他文本文件的中间,也就是在特定字符串之前。我使用以下命令在特殊字符串后添加文本,例如

sed '/line3/ r data.txt' file1.txt (this will add contents of data.txt to file1.txt after "line3" string.

我试图在特定字符串之前添加文件的内容。我不能保证行号,所以我不能使用那个方法。

例如,

    <xa-datasource-property
 name="URL">jdbc:oracle:thin:@domain.com:1521:ora12121</xa-datasource-
property>
    <xa-datasource-property name="User">username</xa-datasource-property>
    <xa-datasource-property name="Password">password</xa-datasource-property>
    <!-- Uncomment the following if you are using Oracle 9i
    <xa-datasource-property name="oracle.jdbc.V8Compatible">true</xa-
datasource-property>
   -->
    <exception-sorter-class-name>
        org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
    </exception-sorter-class-name>
  </xa-datasource>
Run Code Online (Sandbox Code Playgroud)

我想在</xa-datasource>字符串之前添加 data.txt 的内容 。

bash sed shell-script

5
推荐指数
1
解决办法
9072
查看次数

标签 统计

sed ×10

bash ×4

linux ×3

awk ×2

sh ×2

shell-script ×2

bash-scripting ×1

c ×1

csv ×1

find-and-replace ×1

grep ×1

path ×1

perl ×1

regex ×1

shell ×1

solaris ×1

unix ×1