我有这个命令
$ awk ' $0=="string_start" { inSection=1 } inSection; $0=="string_end" { nSection=0 }' input_file.txt >> output_file.txt
如果可能的话,如何从 string_start_file.txt 中的列表中获得多个输入值,将所有输出附加到 output_file.txt 中。
示例 string_start_file.txt
string_start_1
string_start_2
string_start_3
string_start_4
string_start_5
string_start_6
string_start_7
所以有点这个
$ awk ' $0=="string_start1" { inSection=1 } inSection; $0=="string_end" { nSection=0 }' input_file.txt >> output_file.txt
$ awk ' $0=="string_start2" { inSection=1 } inSection; $0=="string_end" { nSection=0 }' input_file.txt >> output_file.txt
$ awk ' $0=="string_start3" { inSection=1 } inSection; $0=="string_end" { nSection=0 }' input_file.txt >> output_file.txt
$ awk ' $0=="string_start4" { inSection=1 } inSection; $0=="string_end" { nSection=0 }' input_file.txt >> output_file.txt
谢谢;)
答案 0 :(得分:0)
如何从 string_start_file.txt
中的列表中获得多个输入值
您可以读取BEGIN块中的开始字符串,将每个字符串设置为数组 index ,然后只需使用in
运算符进行检查即可:
awk 'BEGIN {while (getline <"string_start_file.txt" > 0) starts[$0]=1}
$0 in starts {inSection=1} inSection; $0=="string_end" {inSection=0}' input_file.txt