Questions tagged «replace»

3
一次替换多个字符串
我正在寻找一种使用通用Unix工具(bash,sed,awk或perl)用具体值替换模板文件中占位符字符串的方法。重要的是,一次更换即可完成更换,也就是说,对于另一次更换,不得考虑已经扫描/更换的物品。例如,这两次尝试均失败: echo "AB" | awk '{gsub("A","B");gsub("B","A");print}' >> AA echo "AB" | sed 's/A/B/g;s/B/A/g' >> AA 在这种情况下,正确的结果当然是BA。 通常,该解决方案应等效于从左至右扫描输入,以与给定替换字符串之一进行最长匹​​配,并且对于每个匹配,执行替换并从输入中的该点继续进行操作(无已读取的输入,也不应考虑执行替换操作以进行匹配)。实际上,细节并不重要,只是替换的结果从不考虑全部或部分替换。 注意我只是在寻找正确的通用解决方案。请不要提出某些输入(输入文件,搜索和替换对)失败的解决方案,但是看起来不太可能。
11 bash  sed  awk  string  replace 

2
在vim中保留大小写的搜索和替换?
在中vim,我知道可以区分大小写进行搜索。但是,如果我要搜索大写或小写的字符串,并用相同的大写字母替换它,是否可以在一个字符串中:s///? 例如,我想更改这些行: short Short SHORT 至 long Long LONG 我可以用三个:s命令来执行此操作,也可以使用一个不敏感的命令来:s手动解决问题,但是有更好的方法吗?保留大小写的搜索和替换?

5
Sed:每隔两行换行是否替换模式?
有没有办法告诉sed每秒钟发生一次替换模式?还是至少每隔两行?(当然可以使用脚本,但是我问自己是否sed可以这样做)。 编辑 我发现 sed -e "s/pattern/replacement/g;n" 但是它取代了第一次出现的情况,而不是第二次出现的情况。 例 输入文件: I have a pattern in each line Also the second line has the pattern Another pattern here And -- you guess it -- a pattern 所需的输出: I have a pattern in each line Also the second line has the replacement Another …
10 sed  replace 

2
从文本文件中删除未知的Unicode字符-sed,其他bash / shell方法
我需要在具有相同名称的某些文件中搜索并替换所有出现的未知字符。 用vi打开此类文件,我读取了该字符的<91>代码。用nano打开它们,我在钻石(黑色隆隆声)中看到一个“问号”。 我想用引号(')代替这样的未知字符。我正在尝试许多运气不佳的方法。 我试过了: find ./ -name filename.txt -exec perl -i~ -pe "s/\x91/'/" {} \; find ./ -name filename.txt -exec sed -i "s/\x91/'/g" {} \; 编辑 有关该字符的更多信息: Hexadecimal: 91 68 74 74 Decimal: 145 104 116 116 Octal: 221 150 164 164 Binary: 10010001 01101000 01110100 01110100 LC_ALL=C sed -n …



4
在一行中用2个条件/替换重命名多个文件?
我正在尝试重命名一些图像: IMG_1.JPG IMG_2.JPG IMG_3.JPG 我想,以取代IMG与img和.JPG与.jpg-我知道该怎么做第二部分: $ rename 's/\.JPG$/\.jpg/' *.JPG 我的问题是,我似乎无法这样mv IMG_.JPG做img_.jpg-我知道您可以将多个模式传递给rename,但是我似乎无法使用带有修改后的小写字母值的现有文件名。 我该怎么办?
8 files  rename  replace 

6
将一列中的所有值替换为1
我有多个包含12行和3列的文本文件。 例: 2 6 0.74 42 6 0.58 80 6 0 112 6 0.24 132 6 1 216 6 0.7 342 6 0 390 6 0.21 432 6 0.56 466 6 0.75 524 6 0.6 646 6 0.9 我想在所有行中将第三列的所有值设置为1。 输出应如下所示: 2 6 1 42 6 1 80 6 1 112 …

3
如何删除字符串中的特定字符,但前提是在Linux中该行中没有数字时
我已经为这个看似简单的问题感到困惑。 这是我需要编辑的文件的示例输出: $cat file George Washington Geneva Convention 123,281,029 USD 342,019,929 EUR 我需要删除“乔治华盛顿”和“日内瓦公约”之间的空格,而不是“ 123,281,029 USD”或“ 342,019,929 EUR”之间的空格。 本质上,我的目标是仅在一行中没有数字的情况下才删除一行中单词之间的空格。 我试图通过编辑文件grep -v [0-9] $file | sed 's/ //',但是唯一可行的方法是输出到另一个文件,但这意味着从旧文件到新文件都排除了所有带数字的行,这不是我所需要的。 我已经用grep尝试了一些非常荒谬的循环,sed但是似乎没有什么能正常工作。 同样,这是文件的示例输出: $cat file George Washington Geneva Convention 123,281,029 USD 342,019,929 EUR 这是我想要的输出: $cat file GeorgeWashington GenevaConvention 123,281,029 USD 342,019,929 EUR
8 centos  sed  string  replace 

2
如何使用Bash在二进制文件中查找2个字节,增加它们的值并替换?
我试图在二进制文件中找到两个字节,然后增加这两个字节的值并将其替换为文件中的字节。这两个字节位于位置0x82-0x83上。现在,我已经使用此命令成功提取了这两个字节: #!/usr/bin/env bash BYTES=$(tail -c +131 "$1" | head -c 2) 这些字节的值是:1B 1F。我坚持: 如何将字节转换为整数?应该是6943十进制。 如何将二进制数据附加/回显到文件 如何在位置0x82-0x83的文件内写入增加的字节。我可以使用head -c 130 original.bin >> new_file.bin && magic_command_writing_bytes_to_file >> new_file.bin && tail -c +133 original.bin,但是必须有更好的方法。 我可以用PHP做到这一点,应该会更容易,但是我对如何在bash中做到这一点感兴趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.