bash + sed > replace_3rd_line_180618_exec > 3行目を別の文字列で入替える


動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
GeForce GT 730 1GB GDDR5
CentOS 6.9 (64bit)
NCAR Command Language Version 6.3.0
for WRF3.7.1, WPS3.7.1
  openmpi-1.8.x86_64 とその-devel
  mpich.x86_64 3.1-5.el6とその-devel
  gcc version 4.4.7 (とgfortran)
for WRF3.9, WPS3.9
  Open MPI v2.1.1
  gcc version 4.9.2 (とgfortran; devtoolset-3使用)
 NetCDF v4.4.1.1, NetCDF (Fortran API) v4.4.4
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 
Python 3.6.0 on virtualenv
GNU bash, version 4.1.2(2)-release (x86_64-redhat-linux-gnu)
date (GNU coreutils) 8.4 
tmux 1.6-3.el6

処理概要

  • ファイルの3行目だけを特定の文字列で置換える

参考

code v0.1

replace_3rd_line_180618_exec
#!/usr/bin/env bash

set -eu # just in case

INFILE="in_180618.txt"
RPLTXT="PPP"

# replace 3rd line
sed '3,$d' $INFILE
echo $RPLTXT
sed '1,3d' $INFILE
in_180618.txt
AAA
BBB
CCC
DDD
EEE
$ bash replace_3rd_line_180618_exec 
AAA
BBB
PPP
DDD
EEE

教えていただいた事項

(2018/06/18追加)

@akinomyoga さんのコメントにてINFILEを一回の読込みで済む方法を教えていただきました。

情報感謝です。