Bashから呼び出されたawkを使用してファイルに行を追加します。

Bashから呼び出されたawkを使用してファイルに行を追加します。

このファイルがあります。

127.0.0.1   localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

awkを使用してパターンの前後に行を追加したいと思います127.0.0.1。パターンと行は bash 変数です。

#!/bin/bash

file="test.txt"
pattern='127.0.0.1'
line='127.0.1.1   cent.centurian.com   centurian'

awk -vpattern="$pattern" -vline="$line" '/pattern/{print;print line;next}1' "$file"

動作しません...

ベストアンサー1

sedより簡単です:

sed "/$pattern/a\
$line" "$file"

出力:

127.0.0.1   localhost
127.0.1.1   cent.centurian.com   centurian

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

牛に似た一種の栄養 sed上記の1行バージョンが許可されています。

sed $file -e "/$pattern/a $line"

...そして出力$line 今後 $pattern,変化a(未定)i(入れる):

sed $file -e "/$pattern/i $line"

おすすめ記事