-1

したがって、名前のファイルでカット コマンドを使用して最初の文字を取得し、次に姓の最初の 7 文字を取得する必要があります。この名前は次のように編成されています。

cut -c1 ...... realnames > ./shortnames

...を入れた場所に何が入るかわからない....

4

1 に答える 1

0

これには use ONLY cut を使用できません。これは、cut では文字のリストまたは区切られたフィールドのリストのいずれかのみが許可され、両方は許可されないためです。したがってcut -c1 realnames、最初のイニシャルとcut -f2 -d' ' realnames姓を取得しますが、1 つのコマンドで実行することはできません。いつでも 2 つのカットを使用して一時ファイルを書き込んでから、貼り付けを使用してそれらをつなぎ合わせることができます。その欠点は一時ファイルであり、ペーストには2つの標準入力ストリームが必要になるため、パイプでそれを回避することはできませんが、これは物事の仕組みではありません.

したがって、カット アンド ペーストを使用すると、次のようになります。

cut -c1 realnames>/tmp/names1
cut -f2 -d' ' realnames>/tmp/names2
paste -d '\0' /tmp/names1 /tmp/names2 > ./shortnames
rm /tmp/names1 /tmp/names2

ただし、切り取り以外のプログラム (たとえば貼り付けなど) を許可する場合は、sed を使用することもできます。

sed -e "s/^\(.\)[^ ]* \(.*\)$/\1\2/g" realnames > ./shortnames

これははるかに短いです(ただし、読みやすくはありません)。

于 2013-11-13T23:13:28.577 に答える