Text-Processing
從找到的文件列表中提取行 n 到 m
最終,我需要從每個子目錄中的每個 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