次の内容を含むファイルがあります。
/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"
/hello="morestuffmorestuffmorestuffmorestuffmorestuffmorestuffmorestuff
morestuffmorestuffmorestuffmorestuffmorestuff"
どのように定義を得ることができますか?
/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"
sed
私はパイプを通して "/"で区切られた/hello
コンテンツを受け取りますが、cut
最初の部分文字列を取得する方法がわかりません。
私が使ったコマンド
sed -n '/hello/, /\"/ p' file.txt | cut -d "/" -f 2
何らかの理由で、各部分文字列を最初の行と残りの行に分割します。
答え1
次のいずれかを使用してください。
sed -n '/hello/,/"$/p;/"$/q' infile
または、この式は次のようになります。
sed '/hello/,/"$/!d;/"$/q' infile
または、awk
次のように使用することもできます(常に最初の行があると仮定hello
)。
awk '/hello/ || 1;/"$/{exit}' infile
それ以外の場合は、フラグを使用して管理してください。
awk '/hello/{prnt=1};prnt;/"$/{exit}' infile
答え2
私は次のsedコマンドを使ってこれをしました。
sed '0,/hello.*/!s///' inputfile| sed '/^\/$/,$d'
出力
/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"
答え3
別の方法
sed -n '/\/hello/,/"$/p;/"$/q' iputfile
出力
/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"