次のように、行を複数の引数に変換できるユーティリティについて知っていxargsます。
echo -e "a\nb\nc\n" | xargs
結果:
a b c
しかし、私は取得したい:
a:b:c
文字:は例として使用されます。行間にセパレータを挿入して、単一の引数を取得できるようにしたいと考えています。どうすればいいですか?
次のように、行を複数の引数に変換できるユーティリティについて知っていxargsます。
echo -e "a\nb\nc\n" | xargs
結果:
a b c
しかし、私は取得したい:
a:b:c
文字:は例として使用されます。行間にセパレータを挿入して、単一の引数を取得できるようにしたいと考えています。どうすればいいですか?
NEWLINES を 1 文字ずつ変更する単一の引数に変更したい複数行のファイルがある場合は、次のpasteコマンドが必要です。
$ echo -en "a\nb\nc\n" | paste -s -d ":"
a:b:c
次に、コマンドは次のようになります。
your_command "$(paste -s -d ":" your_file)"
編集:
区切り文字として複数の文字を挿入したい場合は、sedbeforeを使用できますpaste:
your_command "$(sed -e '2,$s/^/<you_separator>/' your_file | paste -s -d "")"
または、より複雑な単一のを使用しますsed。
your_command "$(sed -n -e '1h;2,$H;${x;s/\n/<you_separator>/gp}' your_file)"
あなたが与えた例は私にはうまくいきません。次のものが必要です。
echo -e "a\nb\nc\n" | xargs
取得するa b c。
必要に応じて、これを行うことができます:
echo "a b c" | awk 'OFS=":" {print $1, $2, $3}'
セパレーターをスペースから、:または希望するものに変更します。
次のものも使用できますsed。
echo "a b c" | sed -e 's/ /:/g
それが出力されますa:b:c。
これらすべてのデータ処理の後、必要なxargsコマンドを実行するために使用できます。ただ| xargs、やりたいことは何でもしてください。
それが役に立てば幸い。
を使用して行を結合し、を使用してスペース( )を xargs置き換えることができます。' 'sed
echo -e "a\nb\nc"|xargs| sed -e 's/ /:/g'
結果として
a:b:c
明らかに、この出力を別のコマンドを使用する他のコマンドの引数として使用できますxargs。
echo -e "a\nb\nc"|xargs| sed -e 's/ /:/g'|xargs