我有一个案例,我想远程运行bash脚本。bash脚本打印一些日志。我只想在屏幕上显示几个日志,并移动日志文件中的其余日志。日志文件位于我远程执行bash脚本的主机上。例如,我有两台主机A和主机B。主机A上有以下脚本
echo "Executing the script on $(hostname) at $(date)" # <<<< I want this log in log file
echo -n "[Info] Importing docker images from tar files ..." # <<<
我需要编辑一个bash脚本来排序.vcf文件。vcf文件的结构大致如下:
## header line
## header line
…
Data line
Data line
…
该脚本名为,是用于操作vcf文件的库的一部分。看起来是这样的:
head -1000 $1 | grep "^#"; cat $@ | grep -v "^#" | sort -k1,1d -k2,2n
它是通过编写vcfsort input.vcf > output.vcf来运行的。我大致理解它所做的事情:因为排序应该只在数据行上进行,所以它得到了标题行:
head -100
我在一个目录中有许多fq.gz文件,我想循环遍历每个文件名,删除最后8个字符,并将其打印到示例名称文本文件中。
984674-TAATGAGC-GCTGTAGA--R1.fq.gz
984674-TAATGAGC-GCTGTAGA--R2.fq.gz
将成为:
984674-TAATGAGC-GCTGTAGA--
984674-TAATGAGC-GCTGTAGA--
目前,我有一个bash脚本将每个文件名放入一个数组中,然后将该数组打印到一个sample.txt文件。然后,我尝试将文件名mv为新的所需文件名:
#!/bin/bash
declare -a FILELIST
for f in
我在bash编程方面很新。下面是我的全部问题:编写一个shell脚本,它接受参数对(文件名和数字n),每对脚本将验证文件的大小是否等于数字n。
以下是我试图做的事情:
#!/bin/bash
for i in {$1..${@:(-2):1}..2}
do
for j in {$2..${@: -1}..2}
do
if [$(stat -c%s "$i") -eq $j ]
then
echo $i is $j
else
echo $i is NOT $j
fi
don
我正在尝试从我用以下bash脚本生成的文件列表中删除文件扩展名:
#!/bin/bash
file_list=$(find . -type f) #assuming that the files are stored in the same directory
trimmed_file_list=$(printf '%s\n' "${file_list[@]%.*}")
printf '%s\n' "${trimmed_file_list[@]}"
这个扩展会将扩展从列表中的最后一个条目中删除,但不会减少前面的任何一个条目
我想用bash数组替换文件中的字符串。
例如,文件example.txt:
A: Netherlands
B: Germany
C: United States
A: Netherlands
[Edit #2: In the file are also different strings without the format X:Y]
C, N: United States
现在我想有一个bash脚本来替换字母(Edit:在冒号之前),这样它就变成了
A => Amsterdam
B => Berlin
C => Chicago
N => New York
所以最后我想
我的脚本是文本模式的(没有单独的文件),实际上是大型脚本,每个脚本都聚集在一行中。例如,一个类似grep的脚本:
searchWord=""; for file in *; do <do stuff 1>;...<do stuff 20>; done;
直接将这个“文本”传递给bash是行不通的,因为它需要一个文件:
>bash searchWord="end"; <create filelist>; for file in *;...
searchWord=end: No such file or directory
如何确定文件是否来自bash?
这与非常相似,但是,所提供的解决方案都不起作用。例如,给定源文件setup.bash
if [ "$_" == "$0" ]
then
echo "Please source this script. Do not execute."
exit 1
fi
如果您要使用:/bin/bash -c ". ./setup.bash;"来获取此脚本,您将看到打印出来的消息:“请源此脚本。不要执行。”
为什么会这样呢?
我以这种方式获取该文件,因为我的最终目标是执行一个依赖于此源文件的bash
我得到了一个包含以下内容的文件,并希望删除最后一个逗号(在本例中,在'c‘和’f‘之后的逗号)。
heading1(
a,
b,
c,
);
some more text
heading2(
d,
e,
f,
);
这必须使用bash,而不是Perl或Python等,因为我的目标系统上没有安装这些工具。我可以使用sed、awk等,但不能使用-z参数,因为我使用的是该实用程序的旧版本。
所以sed -zi 's/,\n);/\n);/g' $file已经不在桌面上了。
任何帮助都将不胜感激。谢谢
我有一个创建csv并将其保存到以下位置的python脚本:
file = example.csv
fileDone = os.path.abspath('/home/bw/temp/%s'%file1)
with open(fileDone, 'w+') as myFile:
a = csv.writer(myFile, delimiter=',')
a.writerow(['login report for %s from %s to %s:\n\n'%(name[0],start_date,end_date)
发布
我需要在文件中的两个模式之间选择所有的模式,但是使用变量和*作为通配符。
例如(类似的事情)。
myscript var1 var2 var3
脚本。
#!/bin/bash
cat $1 | sed -n "/*$2*$3/,/## end of string ##/p"
它没有像我预期的那样工作,因为*并不像anything那样工作。*应该是变量之间的任意变量。例如,文件示例($1)就是这样的。
## First line, first variable is var2, and second variable is var3. Information text.
S
我在oozie中有一个属性文件,并从shell脚本中获取值,如下所示:
filter_cond = record = 'n' and name = 'abc' and age = '14'
在Shell脚本中
val cond = ${getproperty filter_cond}
它不会读取整个值,它会一直读取到filter_cond=record
请帮帮我。