Bash

Unix bash/ksh:從特定行的文件中選擇第一個非空格字元

  • June 12, 2015

我有文件file1.txt,其內容如下:

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

現在我想從文件的每一行中讀取非空格元素並寫入一個變數。例如,對於第 2 行變數,應該Quarter Year只在刪除空格後才包含。

我試過:

tail -1 file1.txt > variable1

但它不起作用。

使用sed

variable1="$(< inputfile sed -n '3s/ *//p')"
  • variable1="$([...])":在子shell中執行命令[...]並將其輸出分配給變數$variable
  • < inputfile: 將內容重定向inputfilesed’sstdin
  • -n: 抑制輸出

sed命令分解

  • 3:斷言僅在輸入的第 3 行執行以下命令

  • s: 斷言執行替換

  • /: 開始搜尋模式

  • *: 匹配零個或多個 characters * /`: stops the search pattern / starts the replacement string

  • /: stops the replacement string (hence actually replacing with nothing) / starts the modifiers

  • p: prints only the lines where the substitution succeeded`

引用自:https://unix.stackexchange.com/questions/209196