我有两个代码文件,第一个(File1)包括几行要包含的文本,第二个(File2)包含字符串,这些字符串将被第一个文件中的一系列行替换。第一个文件中包含的行还需要在第二个文件中包含的每个行(不包括引号)中附加以下字符串:“&”。此外,对第一个文件(File1)中的某些字符串的搜索和替换需要在输出文件(File3)中替换。前两个文件的示例如下所示。
File1 1
A A
B B
C C
D D
N 1 & 1 \\
Me 2 & 2 \\
Sd 3 & 3 \\
Dian 4 & 4 \\
E E
F F
G G
H H
File2 2
D D
C C
B
我有一个要求。
我有一个名为a.txt的文本文件,它有一个单词列表-
GOOGLE
FACEBBOK
现在我有了另一个名为b.txt的文件,它的内容为
Company name is google.
Company name is facebook.
就像这样,很多行都有不同的词。
我在写剧本文件-
FILENAME="a.txt"
SCHEMA=$(cat $FILENAME)
for L in $SCHEMA
do
echo "${L,,}"
sed -i -E "s/.+/\L&_/" b.txt
done
所
下面的代码可以工作:
#!bin/bash
ad="J Dt, K R, P MA
A F, E B, R VA
O T, O R, T OK
E A, P Rd, S MA
H S, B R, R MA"
byState() {
a="$ad"
h=$(echo "$a" |
sed -e 's/ MA/, Massachusetts/' | sed -e 's/ OK/, Oklahoma/' | sed -e 's/ VA/, Virginia/')
h=$(
系统: Linux。巴什4号。
我有以下文件,它将作为变量读入脚本中:
/path/sample_A.bam A 1
/path/sample_B.bam B 1
/path/sample_C1.bam C 1
/path/sample_C2.bam C 2
我想在第一列的文件名末尾添加"_string“,但在扩展名(.bam)之前。因为在名称的开头包含路径,所以比较棘手。
期望输出:
/path/sample_A_string.bam A 1
/path/sample_B_string.bam B 1
/path/sample_C1_string.bam C 1
/path/sam
我有一个bash脚本,它检查文件中的字符串模式并删除整行I相同的文件,但不知何故它没有删除该行,也没有从命令提示符中抛出任何错误.same命令,从文件中删除。
#array has patterns
for k in "${patternarr[@]}
do
sed -i '/$k/d' file.txt
done
sed版本>4
当这个循环完成后,我希望从file.txt中删除数组中所有匹配字符串模式的行。
当我从命令提示符运行sed -i '/pataern/d file.txt时,它运行得很好,但在bash内部却没有,谢谢
我见过一些关于如何搜索模式,然后将特定字符串附加到该行的示例。我想,我想要实现的目标有点不同。我正在写一个简单的脚本,它将接受一个参数,在一个文件中搜索一个字符串,如果找到,则将参数附加到找到该字符串的行尾。我通过执行以下操作来调用此脚本:
$bash- ./myscript.sh arg1 arg2 ...
对于代码,我有一些类似的东西:
for ARGS in $*
do
gawk '{a[NR]=$0}/<patter to be found>/{a[NR]=a[NR] $ARGS}END{for(i=1;i<=NR;i++)print a[i]}
我需要替换文件中搜索模式(比如X)之后的第四行(其中包含模式Y)。请注意,模式Y也在其他地方使用。所以我不能直接替换它。还请注意,在第四行只有一个单词Y。有没有什么脚本命令可以很容易地做到?可能"awk“很有用,但不确定如何正确使用它。
ex:在文件中搜索X的模式。在文件中我们已经说过
X,
C,
D,
Y,
A,
现在我需要将第四行的Y替换为B,。
嗨,我有一个这种格式的输入文件。
[Header A]
key1 value1
key2 value2
[Header B]
header1 header2 header3 // separated by tab
1 2 3 //separated by tab
a b c //separated by tab
[Header C]
a
b
c
我必须将HeaderB中的任何内容输出为另一个csv文件,这样CSV文件将如下所示
header1,header2,header3
1,
假设有三个程序的管道:
start | middle | end
如果start和end现在是perl脚本的一部分,我如何通过perl脚本中的shell命令传输数据,以便通过middle
我尝试了以下方法(对于缺乏严格的模式表示歉意,它应该是概念的简单证明):
#!/usr/bin/perl -n
# Output of "start" stage
$start = "a b c d\n";
# This shell command is "middle"
open (PR, "| sed -E 's/a/-/g' |
如何使用外壳脚本将.txt转换为.csv ??
输入
A B 10 C d e f g
H I 88 J k l m n
O P 3 Q r s t u
预期输出-在4个空白后,不要更改为',‘
A,B,10,C,d e f g
H,I,88,J,k l m n
O,P,3,Q,r s t u
我试过了,但还是搞不定"d e f g“
$ cat input.txt | tr -s '[:blank:]' ',' > output.txt
我正在使用下面的sed命令进行搜索和替换操作。
sed -i '/searchstring/s|find string|replace string|g' filename
它会更改输入文件中的所有匹配项。我怎么可能只做一次。
谢谢。
例如,
a
a
b
b
a
c
d
这是输入文件。
命令,如下所示:
sed -i '/a/s|a|changed|g' filename
我得到的输出如下,
changed
changed
b
b
changed
c
D
也就是说,它做了3次改变。
但我只需要改变一次。
预期的输出是,
changed
a