我遇到以下问题:我试图取消注释我确定使用的特定行:
LINESTART=$(grep -nr "matching string" test.conf | cut -d : -f1)
Run Code Online (Sandbox Code Playgroud)
之后我需要取消注释该代码$LINESTART部分$((LINE+10))
LINEEND=$((LINE+10))
Run Code Online (Sandbox Code Playgroud)
我尝试了以下 sed 语法:
sed -i '${LINESTART},${LINEEND} s/# *//' test.conf
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
sed: -e expression #1, char 4: extra characters after command
Run Code Online (Sandbox Code Playgroud)
示例 test.conf:
84 #server {
85 # listen 8000;
86 # listen somename:8080;
87 # server_name somename alias another.alias;
88
89 # location / {
90 # root html;
91 # index index.php index.html index.htm;
92 # }
93 #}
Run Code Online (Sandbox Code Playgroud) 您好,我正在尝试在 opensuse 中创建一个 Shell 脚本来创建 MySqlUsers,但是当我尝试运行它时,出现此错误:
警告:无法使用参数“/home/thomas/Scripts/MySqlCreateUser.sh”启动程序“/home/thomas/Scripts/MySqlCreateUser.sh”。
警告:Exec 格式错误
知道我能做什么吗?
我想按以下方式打印文本
Waiting for completion.
Waiting for completion..
Waiting for completion...
Run Code Online (Sandbox Code Playgroud)
[注:不超过三个点]
上面应该在同一行并且在一个循环中。
当循环条件为假时,我也想在同一行中得到以下内容:
Waiting for completion... [OK]
Run Code Online (Sandbox Code Playgroud)
我如何在 bash 脚本中实现这一目标?
我有以下AWK脚本用于更新settings.py. 我在 Docker 安装期间使用,我正在尝试传递 ENV 变量。
要传递的 ENV 变量:
DB_USER,
DB_PASS,
DB_NAME
Run Code Online (Sandbox Code Playgroud)
下面的代码
awk 'function pr(sp, k, v){ # prints key-value pair with indentation
printf "%s\047%s\047: \047%s\047,\n",sp,k,v;
}
/sqlite/{ sub(/sqlite[0-9]*/,"mysql",$0) }
/NAME/{ sp=substr($0,1,index($0,"\047")-1);
print sp$1" \047$DB_NAME\047";
pr(sp,"USER","$DB_USER"); pr(sp,"PASSWORD","$DB_PASS");
pr(sp,"HOST","localhost"); pr(sp,"PORT",""); next
}1'
Run Code Online (Sandbox Code Playgroud) 我有两个文本文件,我希望在bash中组合,以便一个文件中的每一行与另一个文件中的每个文件组合.
FILE1.TXT
abc123
def346
ghj098
Run Code Online (Sandbox Code Playgroud)
FILE2.TXT
PSYC1001
PSYC1002
PSYC1003
Run Code Online (Sandbox Code Playgroud)
我希望将它们组合起来,以便将第1行file1添加到每一行file2,并|在它们之间使用管道去限制器.
例如
PSYC1001|abc123
PSYC1002|abc123
PSYC1003|abc123
Run Code Online (Sandbox Code Playgroud)
然后对于file1中的其他行也一样,所以我最终会得到
PSYC1001|abc123
PSYC1002|abc123
PSYC1003|abc123
PSYC1001|def346
PSYC1002|def346
PSYC1003|def346
PSYC1001|ghj098
PSYC1002|ghj098
PSYC1003|ghj098<
Run Code Online (Sandbox Code Playgroud)
我一直在bash通过复制本网站的示例来做类似的简单文本,但我没有找到一个可以做到这一点的例子.很想听听你的建议.我知道它一定很简单,但我还没有解决.
在我的shell bash中,我必须选择以ab或开头的文件xyz,而不是以.jpg或结尾.gif
这是我做的,但它不起作用:
$ echo ab*[!.jpg] ab*[!.gif] xyz*[!.jpg] xyz*[!.gif]
如何/bin/bash在以 启动的 docker 容器中运行-d option,例如:
sudo docker run -P --name test-cnt3 -d base-tst:0.1?
Run Code Online (Sandbox Code Playgroud)
我真的需要容器中的控制台,并且我已经对运行它感到绝望
我正在尝试将指针对象插入到map通过emplace()但它不起作用.
我在下面创建了一个简单的问题表示.我正在尝试插入newFooList指针对象类型Foo*.
我似乎找不到为FooMap*in 创建类型的方法std::map<int, FooMap*> m_fooMapList.是否应该使用new地图的第二个字段?
#include <iostream>
#include <utility>
#include <stdint.h>
#include <cstdlib>
#include <map>
class Foo
{
private:
int m_foobar;
public:
Foo(int value)
{
m_foobar = value;
}
void setfoobar(int value);
int getfoobar();
};
class FooMap
{
private:
std::map<int, Foo*> m_newFoo;
public:
FooMap() = default;
};
class FooMapList
{
private:
std::map<int, FooMap*> m_fooMapList;
public:
FooMapList() = default;
void insertFoo(Foo* newFooObj);
};
int Foo::getfoobar(void)
{ …Run Code Online (Sandbox Code Playgroud) 我想在文件的每一行的某些索引中添加分隔符.
我有一个包含数据的文件:
10100100010000
20200200020000
Run Code Online (Sandbox Code Playgroud)
我知道每列的偏移量(2,5和9)
使用此sed命令: sed 's/\(.\{2\}\)/&,/;s/\(.\{6\}\)/&,/;s/\(.\{11\}\)/&,/' myFile
我得到了预期的输出:
10,100,1000,10000
20,200,2000,20000
Run Code Online (Sandbox Code Playgroud)
但是有大量的列(~200)和行(300k)真的很慢.
有没有有效的替代方案?
在GNU bash的手册有以下通道一边谈论外壳参数:
该
command内建不会阻止采取赋值语句从他们扩大为赋值语句的参数建宏; 当不在 POSIX 模式下时,赋值内置函数在命令前面时会丢失它们的赋值语句扩展属性。
由于这个原因,我无法弄清楚它在说什么,并且我也无法设法编写一个命令,该命令在常规模式和 posix 模式之间的赋值表达式的行为上有所不同。
谁能找到这种差异的例子?