我需要在本HEAD节结束之前将一些文本插入到 HTML 文件中。
我想:
sed -i "s#</head>#<style> @page { prince-shrink-to-fit: auto }
.repository-with-sidebar.with-full-navigation .repository-content
{width: 950px ! important;} </style>\n</head>#" ${1}"/"${2}"/"${i}.html
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
sed: 1: command a expects \ followed by text
Run Code Online (Sandbox Code Playgroud)
我只是没有看到我的错误。我什至尝试在样式周围使用单引号。
我想在本HEAD节末尾插入的确切文本是:
<style>
@page { prince-shrink-to-fit: auto }
.repository-with-sidebar.with-full-navigation .repository-content
{width: 950px ! important;}
</style>
Run Code Online (Sandbox Code Playgroud)
编辑:这是确切的命令:
sed -i "s#</head>#<style> @page { prince-shrink-to-fit: auto } .repository-with-sidebar.with-full-navigation .repository-content {width: 950px ! important;} </style>\n</head>#" ${1}"/"${2}"/"${i}.html
Run Code Online (Sandbox Code Playgroud)
编辑 2:为了尝试确保我正确格式化命令,我也在尝试这个:
strToInsert='<style> @page { prince-shrink-to-fit: auto } .repository-with-sidebar.with-full-navigation .repository-content {width: 950px ! important;} …Run Code Online (Sandbox Code Playgroud) 输入文件如下所示:
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
chr4 1 T 35
chr4 2 G 400
chr4 3 C 435
chr4 4 A 223
chr4 5 T 400
chr4 6 G 300
chr4 7 G 340
chr4 8 C 400
Run Code Online (Sandbox Code Playgroud)
实际文件太大无法处理,所以我想输出一个较小的文件,按特定范围内的染色体(第1列)和位置(第2列)过滤。
例如,我正在寻找一个 Linux 命令(sed、awk、grep 等),它将chr4从位置 3 到 7 进行过滤。所需的最终输出是:
chr4 3 C 435
chr4 4 A 223
chr4 5 T 400
chr4 6 G 300
chr4 7 G 340
Run Code Online (Sandbox Code Playgroud)
我不想修改原始文件。
我正在尝试使用 bash 创建一个脚本来任意运行 JBoss XML 配置文件,当我看到特定标签时,将一些自定义值放入其中。
下面的 XML 是来自 JBoss 示例的 XML 配置文件的重要片段。我需要做的是<jvm>在服务器组标签中找到标签,然后检查<jvm-options>标签是否在那里。如果不是,则添加它;如果存在,则添加<options>带有其中值的标签。
<server-groups>
<server-group name="main-server-group" profile="full">
<jvm name="default">
<heap size="64m" max-size="512m"/>
<jvm-options>
<option value="-agentpath:"<DT_HOME>/agent/lib/libdtagent.so"=name=<AgentName>,server=<dynaTraceCollectorName>"/>
</jvm-options>
</jvm>
<socket-binding-group ref="full-sockets"/>
</server-group>
</server-groups>
</domain>
Run Code Online (Sandbox Code Playgroud) 如何找到包含给定文件的所有子文件夹?
例如,在 Minecraft 服务器安装中,不同的世界存储在具有任意名称的子文件夹中。为了确定一个给定的文件夹代表一个世界,我必须在其中寻找一个level.dat。是否有一个命令可以查找所有level.dat文件并返回包含它们的文件夹?
我想让这个命令xrandr -s 640x480使用像这样的变量
#!/bin/bash
display_x=640
display_y=480
xrandr -s $display_xx$display_y
Run Code Online (Sandbox Code Playgroud)
命令运行不正确。我怎样才能做到这一点?
我在名为 Data 的文件夹中有 25 对相关文件。这些文件被命名为tcr1_r1.txt和tcr1_r2.txt、\xe2\x80\x82tcr2_r1.txt和tcr2_r2.txt,依此类推,直到 I\xc2\xa0reach tcr25\xe2\x80\xa6(或我有多少个文件对)。我的问题是我需要将它们配对并在批处理文件中的每对上运行命令。例子:
\n命令 tcr1_r1.txt tcr2_r2.txt\n命令 tcr2_r1.txt tcr2_r2.txt\n\n\n
我怎样才能做到这一点?我正在考虑一个循环,但我似乎无法分离和交替每个命令上的文件。我尝试了一个嵌套循环,但它只是运行每个“r1”文件和所有“r2”文件。
\n\nfor filename1 in /Data/*_r1.txt\ndo\n for filename2 in /Data/*_r2.txt\n do\n echo "$filename1 and $filename2"\n done\ndone\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试使用Jeff Schaller\xe2\x80\x99s 答案.\xc2\xa0\n以下是我\xc2\xa0 尝试过的确切 shell 文件行:
\n\nfor filename1 in /Data/*_r1.txt\ndo\n for filename2 in /Data/*_r2.txt\n do\n echo "$filename1 and $filename2"\n done\ndone\nRun Code Online (Sandbox Code Playgroud)\n\n我\xc2\xa0一定是丢失了一些东西。\xc2\xa0\n我\xe2\x80\x99m\xc2\xa0收到\xc2\xa0“Bad\xc2\xa0substitution”错误消息。
\n我如何使用“POSIX BRE”或“POSIX ERE”正则表达式匹配的字符串(线或字),它不具有bak在结束了吗?
我想做一个ls | egrep '<regex>'查找文件bak名末尾没有的所有文件。
例如,如果有三个文件file1、file2_bak、 和bak_file3,则正则表达式应该只匹配file1和bak_file3(而不是file2_bak)。
我知道这可以用 来完成ls | grep -v 'bak$',但我想在不使用or-v选项的情况下做到这一点。我不想使用,因为这只是关于 POSIX 正则表达式的理论/学术问题。grepegrep-v
这就是我匹配最后确实有的文件名bak的方式:
$ ls | egrep 'bak$'
file2_bak
$
Run Code Online (Sandbox Code Playgroud)
上面的正则表达式, bak$, 匹配最后有的所有字符串bak。但我怎么能写一个匹配所有的字符串正则表达式都没有具备 bak在结束了吗?
使用 Debian 9 stable,我想在启动 NGINX 进程和 shorewall 防火墙之前启动自定义 shell 脚本:
\n\n/etcNGINX 配置、shorewall 配置和/etc/hostssync,不确定这是否是个好主意\nsystemctl 列表依赖项
\n default.target
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80display-manager.service
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\ x94\x80systemd-update-utmp-runlevel.service
\n\xe2\x97\x8f\xe2\x94\x94\xe2\x94\x80multi-user.target
\n\xe2\x97\x8f\xe2\x94\x9c\ xe2\x94\x80console-setup.service
\n\xe2\x97\x8f\xe2\x94\x9c\xe2\x94\x80cron.service
\n\xe2\x97\x8f\xe2\x94\x9c\xe2\x94\ x80dbus.service
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80dropbear.service
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80myservice.service\xe2\ x80\x82\xe2\x80\x82\xe2\x80\x82<-- 我的服务(使用 systemctl 启用创建的链接)
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80networking.service
\ n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80nginx.service\xe2\x80\x82\xe2\x80\x82\xe2\x80\x82\xe2\x80\x82\xe2\x80\ x82\xe2\x80\x82\xe2\x80\x82<-- 在 myservice 之后执行
\n [...]
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80basic.target
\n \xe2\x97\x8f \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80-.mount
\n \xe2\x97\x8f \xe2\x94\x82 \xe2\x94\x9c\ xe2\x94\x80myservice.service\xe2\x80\x82<-- …
在运行ltrace -S由gcc(版本 5.4.0)编译的两个程序后,一个调用vfork(),一个调用fork(),我发现vfork()调用SYS_vforkwhilefork()调用SYS_clone。我找不到任何有关这个特定的行为在任何地方的任何信息(有消息说各的fork(),vfork()并且clone()由相应的命名来实现sys_通话,而其他消息来源说,所有的三个电话使用实施sys_clone)。
源代码:
#include<stdio.h>
main()
{
int pid;
pid=vfork();
}
Run Code Online (Sandbox Code Playgroud)
输出ltrace -S:
...
__libc_start_main([some stuff here] <unfinished ...>
vfork([more stuff] <unfinished ...>
SYS_vfork([more stuff])
--- SIGCHLD (Child exited) ---
Run Code Online (Sandbox Code Playgroud)
libc 使用SYS_vforkforvfork()
但不使用SYS_forkfor是否有原因fork()?我读过托马斯·尼曼的回答到
哪个文件在内核指定fork()的一样,vfork()...在使用sys_clone()系统调用,它说:
vfork()反过来是通过一个单独的CLONE_VFORK标志实现的,这将导致父进程休眠,直到子进程通过信号唤醒它。子进程将是父进程命名空间中唯一的执行线程,直到它调用exec()或退出。不允许孩子写入内存。相应的clone()调用可能如下: …
我想创建一个可以处理参数 ( $1)的别名,如果没有提供参数,可以回退到默认值。例如,
$ alias foo='NUM=${1:-42}; echo $NUM'
Run Code Online (Sandbox Code Playgroud)
在没有参数的情况下调用它可以按我的意愿工作:
$ foo
42
Run Code Online (Sandbox Code Playgroud)
但是使用参数调用时,它会打印我的值和默认值:
$ foo 69
42 69
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样。应该如何正确操作?我怎样才能自己调试这种问题?
我怎样才能编写一个awk可以根据输入文件中的行所要求的内容进行加法或减法的脚本?\xc2\xa0\n我\xc2\xa0弄清楚如何仅进行加法或减法,\n但不是非此即彼在一个脚本中。
例如,我想要这个输入:
\nADD 5,10,20\nSUB 30,5,20\nRun Code Online (Sandbox Code Playgroud)\n产生这个输出:
\n35\n-55\nRun Code Online (Sandbox Code Playgroud)\n这是我到目前为止所写的:
\n#!/bin/awk \nBEGIN {\n FS=","\n}\n\n{\n for(i=1;i<=NF;i++) \n sum+=$i; \n print sum; sum=0}\nRun Code Online (Sandbox Code Playgroud)\n但是,显然,它只进行加法,甚至没有获得所有数字。
\n我想使用 mv 移动文件;这是命令:
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Run Code Online (Sandbox Code Playgroud)
但它返回:
mv: cannot move "/etc/samba/smb.conf" to "/etc/samba/smb.conf.bak": permission denied
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我正在尝试在我的笔记本电脑上为本地 Windows 文件共享服务器安装 Samba 服务器。我是 Linux 的新用户,这台 PC 是辅助笔记本电脑。我的主要设备是 Windows 10 笔记本电脑。