我正在尝试编写以下 bash 脚本:
HOME_DIR=/opt/my_home
find ./CONFIG -type f -exec sed -i "s/_HOME_DIR_/$_HOME_DIR/g" {} \;
Run Code Online (Sandbox Code Playgroud)
我想在文件中更改的行是这样的:
users = "_HOME_DIR_/config/data/_DOMAIN_/users.conf"
Run Code Online (Sandbox Code Playgroud)
所以最终的结果一定是:
users = "/opt/my_home/config/data/_DOMAIN_/users.conf"
Run Code Online (Sandbox Code Playgroud)
但我不明白......我想这是因为转义字符......
任何人都可以透露一些信息吗?
谢谢
我如何从中获得:
randomcollege-nt\user90
Run Code Online (Sandbox Code Playgroud)
对此:
user90
Run Code Online (Sandbox Code Playgroud)
使用sed?
我有“test1.csv”,它包含
200,400,600,800
100,300,500,700
50,25,125,310
Run Code Online (Sandbox Code Playgroud)
和 test2.csv ,它包含
100,4,2,1,7
200,400,600,800
21,22,23,24,25
50,25,125,310
50,25,700,5
Run Code Online (Sandbox Code Playgroud)
现在
diff test2.csv test1.csv > result.csv
Run Code Online (Sandbox Code Playgroud)
不同于
diff test1.csv test2.csv > result.csv
Run Code Online (Sandbox Code Playgroud)
我不知道哪个是正确的顺序,但我想要别的东西,上面的两个命令都会输出类似的东西
2 > 100,4,2,1,7
3 2,3c3,5
4 < 100,300,500,700
5 < 50,25,125,310
6 \ No newline at end of file
7 ---
8 > 21,22,23,24,25
9 > 50,25,125,310
Run Code Online (Sandbox Code Playgroud)
我只想输出差异,因此 results.csv 应该是这样的
100,300,500,700
100,4,2,1,7
21,22,23,24,25
50,25,700,5
Run Code Online (Sandbox Code Playgroud)
我试过了diff -q,diff -s但他们没有成功。顺序无关紧要,重要的是我只想看到差异,没有 > 也没有 < 也没有空格。
grep -FvF 在较小的文件上而不是在大文件上做了技巧
第一个文件包含超过 500 万行,第二个文件包含 1300。
所以 results.csv 应该导致 …
我有这个json文本:
{
"buildStatus" : {
"status" : "ERROR",
"conditions" : [{
"status" : "OK",
"metricKey" : "bugs"
}, {
"status" : "ERROR",
"metricKey" : "test_success_density"
}, {
"status" : "OK",
"metricKey" : "vulnerabilities"
}
],
"periods" : []
}
}
Run Code Online (Sandbox Code Playgroud)
我想提取buildStatus的整体状态,即预期的输出是“ERROR”
"buildStatus" : {
"status" : "ERROR",
....
}
Run Code Online (Sandbox Code Playgroud)
我尝试了下面的 sed 表达式,但它不起作用,它返回OK:
status= sed -E 's/.*\"buildStatus\":.*\"status\":\"([^\"]*)\",.*/\1/' jsonfile
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有一台 Windows XP 笔记本电脑,我在其中运行 VirtualBox 和最新的 Ubuntu,我的硬件有点旧,所以在 Virtual box 中运行最新版本的 Ubuntu 有点麻烦,性能非常慢,即使我正在做的一切正在运行终端并练习 Linux 命令!
我在 VirtualBox 上尝试了 DSL(该死的小型 Linux),非常小的发行版(50 MB),我对系统现在的速度感到满意,但我想念 Ubuntu,此外,DSL 缺少太多命令,例如 sed 和许多其他我不记得了。
是否可以仅在控制台模式下运行 Ubuntu,没有 GUI 或最小 GUI...没有漂亮的效果没有漂亮的图形?链接/教程将不胜感激。
performance command-line virtualbox sed distro-recommendation
在这个答案中(如何使用 sed 删除文件的第一行?)有两种方法可以删除文件中的第一条记录:
sed '1d' $file >> headerless.txt
Run Code Online (Sandbox Code Playgroud)
** - - - - - - - - 或者 - - - - - - - - **
tail -n +2 $file >> headerless.txt
Run Code Online (Sandbox Code Playgroud)
我个人认为该tail选项在外观上更令人愉悦且更具可读性,但可能是因为我受到了sed-challenged。
哪种方法最快?
我的filename文件内容如下(例如):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Run Code Online (Sandbox Code Playgroud)
我想,以取代之间的行块START,并END只用一个词,例如用SINGLEWORD。像下面这样:
My block of line starts from here
SINGLEWORD
and end to here for example.
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令找到我的行块:
grep -Pzo "START(.|\n)*END" filename
Run Code Online (Sandbox Code Playgroud)
运行上述命令的结果将是这样的:
START
First line
second line
third line
END
Run Code Online (Sandbox Code Playgroud)
然后我使用此命令将所有行合并为一行:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Run Code Online (Sandbox Code Playgroud)
然后我会得到这个结果:
START First line second line third line END
Run Code Online (Sandbox Code Playgroud)
通过我的最后一个命令, …
我试图sed替换大文件(100 MB)中的一些关键字。我不知道-i(inplace) 选项,所以我的第一次尝试是这样重定向:
sed 's/original/edited/g' file.log >> file.log
Run Code Online (Sandbox Code Playgroud)
之后发生的事情是我的电脑停止了,几乎没有键盘输入。我尝试了不同的控制台Ctrl+ Alt+ F1,但以后慢慢输入用户名,就停止了。没有键盘,我唯一的选择是硬件重置机器。登录后,我看到file.log大约有8GB。
我真的很想了解为什么该命令的执行能够使系统如此无响应,以及系统级别是否存在触发警报并终止违规进程的机制?
$ (echo hello; echo there) | sed ':a;$!N;s/\n/string/;ta'
hellostringthere
Run Code Online (Sandbox Code Playgroud)
上面的sed命令用字符串“string”替换换行符。但我不知道:a;$!N;s/\n/string/;ta单引号内的含义。我知道中间部分s/\n/string/。但我不知道 first ( :a;$!N;) 和 last ( ta) 部分的功能。
有没有办法删除以某些字符串开头的行。
我有这个 youtube-dl 代码
youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E
Run Code Online (Sandbox Code Playgroud)
它的结果是这样的
[youtube:playlist] PL1C815DB73EC2678E: Downloading webpage
[download] Downloading playlist: Less than 1 minute
[youtube:playlist] playlist Less than 1 minute: Collected 4 video ids (downloading 4 of them)
[download] Downloading video 1 of 4
[youtube] KNLwsqzFfNg: Downloading webpage
[youtube] KNLwsqzFfNg: Extracting video information
[youtube] KNLwsqzFfNg: Downloading DASH manifest
[download] Destination: _1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.m4a
[download] 0.4% of 231.51KiB at 6.10KiB/s ETA 00:30
[download] 1.1% of …Run Code Online (Sandbox Code Playgroud) sed ×10
command-line ×7
awk ×3
grep ×2
scripts ×2
diff ×1
performance ×1
perl ×1
regex ×1
tail ×1
virtualbox ×1
youtube-dl ×1