相关疑难解决方法(0)

sed就地标志,适用于Mac(BSD)和Linux

是否有一个sedtodo就地编辑的调用,没有可在Linux和Mac上运行的备份?虽然BSD sed随OS X似乎需要sed -i '' …,在GNU sedLinux的发行版通常都与解释的报价为空,输入文件名(而不是备份扩展),并且需要sed -i …替代.

是否有任何命令行语法适用于这两种风格,所以我可以在两个系统上使用相同的脚本?

linux macos bsd sed

218
推荐指数
10
解决办法
7万
查看次数

RE错误:Mac OS X上的非法字节序列

我正在尝试替换Mac OS X上的Makefile中的字符串,以便交叉编译到iOS.该字符串嵌入了双引号.命令是:

sed -i "" 's|"iphoneos-cross","llvm-gcc:-O3|"iphoneos-cross","clang:-Os|g' Configure
Run Code Online (Sandbox Code Playgroud)

错误是:

sed: RE error: illegal byte sequence
Run Code Online (Sandbox Code Playgroud)

我试着逃避双引号,逗号,破折号和冒号,没有任何快乐.例如:

sed -i "" 's|\"iphoneos-cross\"\,\"llvm-gcc\:\-O3|\"iphoneos-cross\"\,\"clang\:\-Os|g' Configure
Run Code Online (Sandbox Code Playgroud)

我有一点时间调试这个问题.有谁知道如何sed打印非法字节序列的位置?或者有谁知道非法字节序列是什么?

regex macos bash sed

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

是否可以使用sed可靠地转义正则表达式元字符

我想知道是否有可能编写一个100%可靠的sed命令来转义输入字符串中的任何正则表达式元字符,以便它可以在后续的sed命令中使用.像这样:

#!/bin/bash
# Trying to replace one regex by another in an input file with sed

search="/abc\n\t[a-z]\+\([^ ]\)\{2,3\}\3"
replace="/xyz\n\t[0-9]\+\([^ ]\)\{2,3\}\3"

# Sanitize input
search=$(sed 'script to escape' <<< "$search")
replace=$(sed 'script to escape' <<< "$replace")

# Use it in a sed command
sed "s/$search/$replace/" input
Run Code Online (Sandbox Code Playgroud)

我知道有更好的工具可以使用固定字符串而不是模式,例如awk,perlpython.我想证明是否有可能sed.我会说让我们专注于基本的POSIX正则表达式,以获得更多乐趣!:)

我已经尝试了很多东西,但任何时候我都能找到一个打破了我的尝试的输入.我认为保持它是抽象的,因为script to escape不会导致任何人走错方向.

顺便说一下,讨论在这里提出来了.我认为这可能是收集解决方案的好地方,可能会破坏和/或详细说明.

regex sed

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

从 CSV 中删除 \r (CR)

在 OSX 上,我需要从我的 CSV 文件中删除行尾 CR ( \r) 字符(表示为^M的输出cat -v):

$ cat -v myitems.csv
Run Code Online (Sandbox Code Playgroud)

输出:

strPicture,strEmail^M
image1xl.jpg,me@example.com^M
Run Code Online (Sandbox Code Playgroud)

我用 sed 和 perl 尝试了很多选项,但没有任何效果。

有任何想法吗?

csv macos newline sed

3
推荐指数
1
解决办法
7491
查看次数

使用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 ×5

macos ×3

bash ×2

regex ×2

awk ×1

bsd ×1

csv ×1

linux ×1

newline ×1