相关疑难解决方法(0)

如何使用sed替换换行符(\n)?

如何\n使用sed命令替换换行符()?

我没试成功:

sed 's#\n# #g' file
sed 's#^$# #g' file
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

sed

1295
推荐指数
23
解决办法
157万
查看次数

更正Bash和shell脚本变量大小写

我遇到了许多带有变量的shell脚本,我一直认为存在严重的误解.我的理解是,按照惯例(也许很久以前就必须),环境变量都是全部的.

但是在像Bash这样的现代脚本环境中,我总是倾向于使用临时变量的小写名称约定,而仅为导出(即环境)变量使用大写的约定.例如:

#!/usr/bin/env bash
year=`date +%Y`
echo "It is $year."
export JAVA_HOME="$HOME/java"
Run Code Online (Sandbox Code Playgroud)

这一直是我对事物的看法.是否有任何权威来源同意或不同意这种方法,还是纯粹是风格问题?

bash shell scripting naming-conventions capitalization

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

sed用多行代替变量

我试图用一个跨越多行的文本替换一个单词.我知道我可以简单地使用换行符\n来解决这个问题,但我想保持字符串"干净"任何不需要的格式.

以下示例显然不起作用:

read -r -d '' TEST <<EOI
a
b
c
EOI

sed -e "s/TOREPLACE/${TEST}/" file.txt
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一点的任何想法没有修改以读取开始并以EOI结束的部分?

variables bash sed

7
推荐指数
2
解决办法
7938
查看次数

sed 用多行变量替换行

我试图用存储在变量中的多行字符串替换文件中的一行。

打印到屏幕时我能够得到正确的结果,但如果我想进行就地替换则不行。

该文件具有以下形式:

*some code*
*some code*
string_to_replace
*some code*
Run Code Online (Sandbox Code Playgroud)

我希望生成的文件是:

*some code*
*some code*
line number 1
line number 2
line number 3
*some code*
Run Code Online (Sandbox Code Playgroud)

我试过的代码是:

new_string="line number 1\nline number 2\nline number 3"

# Correct output on screen
sed -e s/"string_to_replace"/"${new_string}"/g $file

# Single-line output in file: "line number 1line number 2line number 3"
sed -i s/"string_to_replace"/"${new_string}"/g $file
Run Code Online (Sandbox Code Playgroud)

尝试组合-i-e选项时,结果与仅使用-i.

我在 CentOS 上使用 GNU sed 4.1.5 版(通过 Mac 的 ssh 连接到它)。

bash sed multiline

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

在 sed 命令中使用多行变量

我有一个从 STDOUT 捕获的多行变量。
我想使用此多行变量将 echo 命令插入到另一个脚本(目标)的第 15 行。

#!/bin/bash
TEST=`cat foo`

echo "$TEST"

sed -i "15i echo \"$TEST\" > someotherfile" target  
Run Code Online (Sandbox Code Playgroud)

foo 的内容:

apples
oranges
bananas
carrots
Run Code Online (Sandbox Code Playgroud)

我认为 sed 命令以换行方式读取,我确认我的 foo 有:

user@test$ cat foo | tr -cd '\n' | wc -c
4
Run Code Online (Sandbox Code Playgroud)

当我运行 test.sh 脚本时,我看到了 中的内容$TEST,但收到 sed 命令错误:

user@test$ ./test.sh
apples
oranges
bananas
carrots
sed: -e expression #1, char 18: unknown command: `o'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢。

bash sed

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

将 sed 与包含 url 的变量一起使用

80我试图读取一个文件并用另一个文件的内容替换占位符。问题是变量包含 url,这似乎会导致 sed 出现问题。另外:如何从images.txt 中保留新行?有没有办法让我的解决方案起作用,或者是否有另一种更适合我的问题的解决方案?我想用备份文件的内容覆盖文件的内容。此外,该步骤应包括用第三个文件的内容替换占位符。谢谢你。我目前使用的:

<images.html
TEXT=$(<images.txt)
sed 's~URLS~$TEXT~g' imagesbu.html > images.html
Run Code Online (Sandbox Code Playgroud)

这不起作用,只显示:

sed: -e expression #1, char 80: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)

文件内容为:

https://cdn.tutsplus.com/vector/uploads/legacy/tuts/165_Shiny_Dice/27.jpg
https://cdn.tutsplus.com/vector/uploads/legacy/tuts/165_Shiny_Dice/27.jpg
Run Code Online (Sandbox Code Playgroud)

如果文件中没有换行符,它就可以工作。

linux bash debian escaping sed

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