【问题标题】:multiple string input from file , awk command来自文件的多个字符串输入,awk 命令
【发布时间】:2019-05-16 22:28:20
【问题描述】:

来自文件的多个输入值

我有这个命令

   $ 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

谢谢 ;)

【问题讨论】:

  • 这个脚本背后的逻辑是什么?请也发布示例输出。
  • 另外,请考虑改写您的问题。可以改写成这样:I have a file 'string_start_file.txt' I wish to grab its lines and prefix each line before the corresponding line in 'input_file.txt' and append the output to 'output_file.txt'。我不确定这是否是你想要的。

标签: shell unix


【解决方案1】:

如何从 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

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 2013-02-05
    • 2013-02-05
    • 2019-10-17
    • 2011-10-08
    • 2016-06-05
    • 2015-03-14
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多