小编Sco*_*ott的帖子

sed:在 <HEAD> 部分结束前插入文本

我需要在本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)

osx sed text-processing

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

根据列值将文件拆分为行

输入文件如下所示:

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)

我不想修改原始文件。

linux grep sed awk text-processing

3
推荐指数
2
解决办法
2801
查看次数

将自定义 XML 标记插入到 bash 脚本中的 XML 文件中

我正在尝试使用 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)

scripting bash xml

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

查找包含文件的文件夹

如何找到包含给定文件的所有子文件夹?

例如,在 Minecraft 服务器安装中,不同的世界存储在具有任意名称的子文件夹中。为了确定一个给定的文件夹代表一个世界,我必须在其中寻找一个level.dat。是否有一个命令可以查找所有level.dat文件并返回包含它们的文件夹?

find

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

命令中的 Bash 变量

我想让这个命令xrandr -s 640x480使用像这样的变量

#!/bin/bash

display_x=640
display_y=480

xrandr -s $display_xx$display_y
Run Code Online (Sandbox Code Playgroud)

命令运行不正确。我怎样才能做到这一点?

bash xrandr shell-script variable

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

在 bash shell 中循环访问两组文件

我在名为 Data 的文件夹中有 25 对相关文件。这些文件被命名为tcr1_r1.txttcr1_r2.txt、\xe2\x80\x82tcr2_r1.txttcr2_r2.txt,依此类推,直到 I\xc2\xa0reach tcr25\xe2\x80\xa6(或我有多少个文件对)。我的问题是我需要将它们配对并在批处理文件中的每对上运行命令。例子:

\n\n

\n命令  tcr1_r1.txt tcr2_r2.txt\n命令  tcr2_r1.txt tcr2_r2.txt\n

\n\n

我怎样才能做到这一点?我正在考虑一个循环,但我似乎无法分离和交替每个命令上的文件。我尝试了一个嵌套循环,但它只是运行每个“r1”文件和所有“r2”文件。

\n\n
for filename1 in /Data/*_r1.txt\ndo\n  for filename2 in /Data/*_r2.txt\n  do\n     echo "$filename1 and $filename2"\n  done\ndone\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

我尝试使用Jeff Schaller\xe2\x80\x99s 答案.\xc2\xa0\n以下是我\xc2\xa0 尝试过的确切 shell 文件行:

\n\n
for filename1 in /Data/*_r1.txt\ndo\n  for filename2 in /Data/*_r2.txt\n  do\n     echo "$filename1 and $filename2"\n  done\ndone\n
Run Code Online (Sandbox Code Playgroud)\n\n

我\xc2\xa0一定是丢失了一些东西。\xc2\xa0\n我\xe2\x80\x99m\xc2\xa0收到\xc2\xa0“Bad\xc2\xa0substitution”错误消息。

\n

shell bash shell-script filenames

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

如何使用正则表达式匹配末尾没有特定字符串的模式

我如何使用“POSIX BRE”或“POSIX ERE”正则表达式匹配的字符串(线或字),它具有bak在结束了吗?

我想做一个ls | egrep '<regex>'查找文件bak名末尾没有的所有文件。

例如,如果有三个文件file1file2_bak、 和bak_file3,则正则表达式应该只匹配file1bak_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在结束了吗?

grep regular-expression

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

systemd:在启动 nginx 之前完成自定义 shell 脚本的执行

使用 Debian 9 stable,我想在启动 NGINX 进程和 shorewall 防火墙之前启动自定义 shell 脚本:

\n\n
    \n
  • 做一些初始化工作
  • \n
  • 挂载一个目录(overlayfs)以覆盖/etcNGINX 配置、shorewall 配置和/etc/hosts
  • \n
  • 该脚本也以 结尾sync,不确定这是否是个好主意
  • \n
\n\n
\n

systemctl 列表依赖项
\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<-- …

debian init-script systemd services nginx

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

vfork() 调用 SYS_vfork 但 fork() 调用 SYS_clone?

在运行ltrace -Sgcc(版本 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()调用可能如下: …

linux glibc linux-kernel ltrace

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

使用 `$1` 和后备默认值的别名打印参数和后备值

我想创建一个可以处理参数 ( $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)

我不明白为什么会这样。应该如何正确操作?我怎样才能自己调试这种问题?

shell debugging alias troubleshooting

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

基于行中操作码(指令)的 ADD 或 SUB 编号

我怎样才能编写一个awk可以根据输入文件中的行所要求的内容进行加法或减法的脚本?\xc2\xa0\n我\xc2\xa0弄清楚如何仅进行加法或减法,\n但不是非此即彼在一个脚本中。

\n

例如,我想要这个输入:

\n
ADD 5,10,20\nSUB 30,5,20\n
Run Code Online (Sandbox Code Playgroud)\n

产生这个输出:

\n
35\n-55\n
Run 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}\n
Run Code Online (Sandbox Code Playgroud)\n

但是,显然,它只进行加法,甚至没有获得所有数字。

\n

scripting awk text-processing

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

终端不能使用“mv”,因为“权限被拒绝”(Linux Mint/Debian)

我想使用 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 笔记本电脑。

linux permissions samba

-3
推荐指数
1
解决办法
3540
查看次数