Text-Processing

從找到的文件列表中提取行 n 到 m

  • October 26, 2021

最終,我需要從每個子目錄中的每個 CSV 中獲取第 3-53 行。

我從一個文件中抓取了這樣的行(不一定需要’cat’):

cat /[path]/[file].csv | head -53 | tail -51

以及我需要的文件(需要“查找”

find /[path]/ -name "*.csv"

問題是我無法將兩者聯繫在一起。有人可以將我推向正確的方向嗎?

試試這個:

find /path/to/file/ -maxdepth 1 -type f -name '*.csv' -print0 | while read -d '' -r file; do sed -n '3,53p' $file; done

注意print0處理文件名中任何可能的空白字元的選項。

如果我理解正確,我認為以下內容應該對您有所幫助。

腳本/行:

$ for csv_files in $(find /home/t1/ -name "*.csv"); do echo $csv_files ; done

輸出:

/home/t1/t4/t4.csv
/home/t1/t1/t1.csv
/home/t1/t2/t2.csv
/home/t1/t3/t3.csv

而不是echo你可以插入你的第二個命令cat $csv_files | head -53 | tail -51

為了完成感,我替換了echo以下行:

$ for csv_files in $(find /home/t1/ -name "*.csv"); do cat $csv_files | head -53 | tail -51; done 

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