如何使用shell脚本和awk获取特定的输出文件?

时间:2019-04-30 18:17:34

标签: bash shell

我有一个输入文件: add.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
..
..
.

请让我知道我该怎么做?

1 个答案:

答案 0 :(得分:0)

一个快速,粗糙的开始-

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在大型数据文件上会更快。

即使您没有行也要打印行,请添加并检查更多标志。