したがって、名前のファイルでカット コマンドを使用して最初の文字を取得し、次に姓の最初の 7 文字を取得する必要があります。この名前は次のように編成されています。
cut -c1 ...... realnames > ./shortnames
...を入れた場所に何が入るかわからない....
これには 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
これははるかに短いです(ただし、読みやすくはありません)。