Unix bash/ksh: ファイルの特定の行で、空白ではなく最初の文字を選択します。

Unix bash/ksh: ファイルの特定の行で、空白ではなく最初の文字を選択します。

file1.txt次の内容を含むファイルがあります。

Date List
-----------
    Quarter Date
         Year Date
             Month Date

さて、ファイルの各行から空白以外の要素を読み込み、変数に書きたいと思います。たとえば、2行目の場合は、Quarter Yearスペースを削除した後にのみ変数を含める必要があります。

私は試した:

tail -1 file1.txt > variable1

しかし、これはうまくいきません。

ベストアンサー1

使用sed:

variable1="$(< inputfile sed -n '3s/ *//p')"
  • variable1="$([...])":サブシェルでコマンドを実行し、[...]その出力を変数に割り当てます。$variable
  • < inputfile:コンテンツを「s」inputfileにリダイレクトします。sedstdin
  • -n: 出力抑制

sedコマンド分解:

  • 3: 入力の 3 行目でのみ、次のコマンドを実行するようアサートします。
  • s: 置換を実行するためのアサーション
  • /: 検索モード開始
  • *:0個以上の文字と一致します。
  • /:パターン検索を停止/文字列置換を開始
  • /:文字列の一時停止(実際には何も交換されません)/修飾子の開始
  • p:交換に成功したラインのみ印刷

おすすめ記事