相关疑难解决方法(0)

Unix Shell循环文件并替换文本

我对这个东西相当新,我需要一个shell文件来遍历文件夹中的所有".xml"文件,并进行一些文本替换.到目前为止,我已经想出了这个:

sed "s/old_text/new_text/g" testfile.xml -i
Run Code Online (Sandbox Code Playgroud)

但是,我希望它在当前文件夹中的所有xml文件上运行,而不仅仅在"testfile.xml"上运行.此外,如何备份原始文件?

任何输入都受到欢迎!非常感谢!

unix shell loops sed

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

为什么`读线; 声明$ line`和`find ... +`?

以下脚本有效,但有什么用途declare $line?如果我删除它,它不起作用.

又什么的差异{} \;,并{} +find命令?

awk '{print "old="$1" new="$2}' list.txt |\
while IFS= read line; do
    declare $line
    find /path -name '*.ext' -exec sed -i "s/\b$old\b/$new/" {} +
done
Run Code Online (Sandbox Code Playgroud)

linux bash

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

Bash one-liner 将所有 [:punct:] 字符替换为相同的转义字符

我目前未解决的 bash 问题是如何替换类中的所有字符[:punct:],即

[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]
Run Code Online (Sandbox Code Playgroud)

, 每个都有相同的字符,用反斜杠转义。例如,我想^h?e.l*l+o:成为\^h\?e\.l\*l\+o\:.

我可以用循环的多线方式来做到这一点。有没有可能以更简洁优雅的方式做到这一点?

谢谢,卢卡

regex bash string-substitution

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

使用任何东西作为sed或Perl正则表达式的输入?

如果我做

comment () { sed -i "/$1/s/^/$2 /g" $3 }

comment /dev/sysmsg '#' /tmp/1
comment '*.err'     '#' /tmp/1
Run Code Online (Sandbox Code Playgroud)

带输入文件

*.err;kern.notice;auth.notice   /dev/sysmsg
fff
ff
Run Code Online (Sandbox Code Playgroud)

然后它就像/sed分隔符中那样断开,*也被视为正则表达式.

有没有办法使它健壮,所以输入字符串$1可以包含我想要的任何东西?或者我需要转移到Perl?

linux bash perl sed

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

sed 字符串中的 AppleScript 变量

我绝不是 AppleScript 专家,但也过得去。sed我在尝试将一些 AppleScript 变量传递给命令以便根据变量替换文件中的某些文本时遇到了麻烦。

\n\n

我在 AppleScript 中有两个对话框可以获取用户数据,并存储这些变量。myData- 这工作正常。

\n\n
set myData to text returned of \xc2\xac\n    (display dialog "Enter Your Data" with title \xc2\xac\n        "Data Entry" default answer \xc2\xac\n        "" buttons {"Continue\xe2\x80\xa6"} \xc2\xac\n        default button 1 \xc2\xac\n        ) \n\nset searchFor to quoted form of "data1"\nset searchFor2 to quoted form of "data2"\nset inputFile to "/Users/User1/Desktop/file.txt"\nset outputFile to "/Users/User1/Desktop/file1.txt"\n\ndo shell script quoted form of ("sed -i.bak s/" & searchFor & "/" & myData & "/g") & …
Run Code Online (Sandbox Code Playgroud)

bash applescript sed

0
推荐指数
1
解决办法
681
查看次数

在linux中替换文件中每一行中的字符

我有一个文件,每行都有不同的单词。我的目标是将第一个字符替换为大写字母并将第三个字符替换为“#”。

例如:football 将被交换为 -> Foo#ball

我尝试考虑使用 awk 和 sed。它对我没有帮助,因为(据我所知)sed 需要精确的字符输入,而 awk 可以打印所需的字符但不能更改它。

linux bash awk sed

0
推荐指数
1
解决办法
866
查看次数

标签 统计

bash ×5

sed ×4

linux ×3

applescript ×1

awk ×1

loops ×1

perl ×1

regex ×1

shell ×1

string-substitution ×1

unix ×1