2016-04-29 6 views
-2

私はライン31でspanタグの内容をコピーして、5のawkなど、sedを使用して、ファイル内の行の内容を置き換え

にライン上で入力ファイルを入れたい:

... 
<h1> 
    This is line 5, and it is a default string for all files 
</h1> 
    ... 
    ... 
<span id="foo"> This is line 31, different in every file </span> 
... 

出力リレーのファイル:

... 
<h1> 
    This is line 31, different in every file 
</h1> 
    ... 
    ... 
<span id="foo"> This is line 31, different in every file </span> 
... 

多くの感謝!

+0

代わりにnode.jsを使用してください。 – webb

答えて

0

は、あなたがそれをスクリプトしている場合、あなたはsedをwantedがあるので、この

in_file=$1 
out_file=output.txt 

line=$(sed -n '31p' $in_file) 
sed '5c'"$line"'' $in_file >$out_file 

のようにそれを行うことができ、bashスクリプトでのsedでそれを行うための方法があります。 sedとawkはストリームエディタなので、結果を得るためには2回実行する必要があります。前進し、後退しません。

0

古い学校に行ってください。ファイルfile.txtの行31の内容とライン5の内容を置換するには、使用:

printf '31y\n5x\n5d\nw\n' | ed file.txt 

絶対に保証が提供されていません。自己責任。

1

awkレスキュー!あなたは、HTML(またはXML)を意識ツールを持っていない場合は、以下の

awk -F'[<>]' 'NR==FNR{if(NR==31)line=$3; next} 
       FNR==5{$0=line} 1' file{,} 

は二回、ファイルをスキャンし、厳密にフォーマットが指定された依存しようとすることができ、余分な作業をより堅牢にすることができます。

関連する問題