我的文件包含两行总是盯着foo
和bar
后跟一个冒号,一个空格和一个固定长度的字符串(可以包含大写字母A-Z
,数字{{ 1}}和0-9
):
<
我想迭代每个文件,连接foo: PF29273467<<<<<<<<
bar: CLPERJD<<<<<122111
和foo
的字符串,并将这个新字符串作为新行添加到文本文件中,前面是字符串文件中的文件名起源和空间。
因此,当迭代一组3个文件(file1.x,file2.x,file3.x)时,新文本文件的内容将是:
bar
我对bash脚本并不太熟悉,所以直到现在我所能提出的是迭代文件并打印包含file1.x PF29273467<<<<<<<<CLPERJD<<<<<122111
file2.x FLOEH73443<<<<1<<<CROEKJF<<<<<1F2122
file3.x IRHDS72455<<<<23<<XXXSDWR<<<<<122111
的行
#!/斌/庆典
foo:
答案 0 :(得分:1)
使用perl
regEx
,我就能实现这一目标。
#!/bin/bash
for file in *.x
do
fooOP=$(perl -lne 'print "$1" if/^foo:\s(.*)$/' "$file")
barOP=$(perl -lne 'print "$1" if/^bar:\s(.*)$/' "$file")
printf "%s %s%s\n" "$file" "$fooOP" "$barOP"
done > newfile
看到输出文件
$ cat newfile
file1.x PF29273467<<<<<<<<CLPERJD<<<<<122111
file2.x FLOEH73443<<<<1<<<CROEKJF<<<<<1F2122
file3.x IRHDS72455<<<<23<<XXXSDWR<<<<<122111
可以对perl
regEx
进行更好的优化,使其成为单一捕获。