来自文件的多字符串输入,awk命令

时间:2019-05-16 22:28:21

标签: shell unix

文件中的多个输入值

我有这个命令

   $ 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
  • 注意string_end始终相同。

所以有点这个

       $ 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

谢谢;)

1 个答案:

答案 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