【问题标题】:How can I get a particular output file by using shell script and awk?如何使用 shell 脚本和 awk 获取特定的输出文件?
【发布时间】:2019-09-19 10:53:35
【问题描述】:

我有一个输入文件: 添加.txt:

\\91191191111,us-west-2
293jsa3jj3nj3
4535jn4545jnj
2324jnjnnjk54
5jnj54jnk3533
\\00012985868,us-west-2
2232sddmakma
231900aasa00
324km2kmk433
\\9292011323,us-west-1
\\9203290324,us-west-2
cfdcfdc23213

我想要实现的是:

\\91191191111,us-west-2,293jsa3jj3nj3
\\91191191111,us-west-2,4535jn4545jnj
\\91191191111,us-west-2,2324jnjnnjk54
\\91191191111,us-west-2,5jnj54jnk3533
\\00012985868,us-west-2,2232sddmakma
..
..
.

请告诉我该怎么做?

【问题讨论】:

  • \ 91191191111,US-西-2 293jsa3jj3nj3 4535jn4545jnj 2324jnjnnjk54 5jnj54jnk3533 \ 00012985868,US-西-2 2232sddmakma 231900aasa00 324km2kmk433 \ 9292011323,US-西-1 \ 9203290324,US-西-2 cfdcfdc23213 跨度>
  • 我建议看看awk
  • 到目前为止你尝试了什么?

标签: bash shell


【解决方案1】:

对您来说是一个快速而艰难的开始 -

while read line
do case "$line" in
   *,*) key="$line";;
     *) echo "\\$key,$line";;
   esac
done < add.txt

产生

\\91191191111,us-west-2,293jsa3jj3nj3
\\91191191111,us-west-2,4535jn4545jnj
\\91191191111,us-west-2,2324jnjnnjk54
\\91191191111,us-west-2,5jnj54jnk3533
\\00012985868,us-west-2,2232sddmakma
\\00012985868,us-west-2,231900aasa00
\\00012985868,us-west-2,324km2kmk433
\\9203290324,us-west-2,cfdcfdc23213

它忽略\\9292011323,us-west-1,因为它没有后续数据行。

具有相似逻辑的awk 在大型数据文件上会更快。

如果您想打印没有数据部分的行,请添加并检查更多标志。

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 2015-02-28
    • 2013-05-03
    • 2022-12-05
    • 2019-10-15
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多