[解決済み] ファイルを分割して、最初の行をそれぞれの断片に残すにはどうしたらいいですか?
2023-05-01 15:18:08
質問
与えられた。 最初の行が「特別な」テキスト-データファイル(例:CSV形式)1つ(例:フィールド名)。
募集中です。
coreutils に相当するもの
split -l
コマンドと同等ですが、元のファイルからのヘッダ行を結果の各ピースの最初に表示するという追加の要件があります。
私は、何らかの方法で
split
と
head
でいいのでしょうか?
どのように解決するのですか?
これは robhruskaの スクリプトを少し整理したものです。
tail -n +2 file.txt | split -l 4 - split_
for file in split_*
do
head -n 1 file.txt > tmp_file
cat "$file" >> tmp_file
mv -f tmp_file "$file"
done
私は
wc
,
cut
,
ls
と
echo
を不要な場所に追加しました。もう少し意味のあるファイル名にするために、いくつかのファイル名を変更しました。読みやすくするために、複数行に分割しただけです。
もっと派手にやりたいなら
mktemp
あるいは
tempfile
で、ハードコードされたファイル名を使う代わりに、 一時的なファイル名を作成することができます。
編集
GNUを使う
split
を使えば可能です。
split_filter () { { head -n 1 file.txt; cat; } > "$FILE"; }; export -f split_filter; tail -n +2 file.txt | split --lines=4 --filter=split_filter - split_
読みやすくするためにブレイクアウトしています。
split_filter () { { head -n 1 file.txt; cat; } > "$FILE"; }
export -f split_filter
tail -n +2 file.txt | split --lines=4 --filter=split_filter - split_
いつ
--filter
が指定されている場合。
split
は各出力ファイルに対してコマンド (この場合は関数。エクスポートする必要があります) を実行し、変数
FILE
をファイル名に設定します。
フィルタスクリプトや関数は、出力内容やファイル名に対してどんな操作でも行うことができます。後者の例としては、可変ディレクトリの固定ファイル名への出力が考えられます。
> "$FILE/data.dat"
といった具合です。
関連
-
deepin20のサブネットマスクはどこですか?deepinのサブネットマスクを表示するためのヒント
-
deepin20の不正確な時刻表示を調整する方法は?Deepinの時刻補正方法
-
deepin20のデスクトップアイコンのスタイルを変更する方法は?deepinのアイコンテーマを変更するためのヒント
-
[解決済み] Bashスクリプトでスクリプトファイル名を知るには?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] コマンドラインから .bash_profile を再読み込みする方法は?
-
[解決済み] ターミナルで現在の行をクリア/削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
LinuxでPingを無効にする、または許可する設定方法
-
Linux sarコマンドによるシステム性能の詳細解析事例
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
deepin linuxからmacosx仮想マシンに直接ファイルをドラッグ&ドロップする方法は?
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
Deepin20システムのフォントを設定するには?Deepin端末のフォントサイズを設定する方法
-
Centos7 dns service named installation, encountered ** server can't find xxx.com: NXDOMAIN問題
-
[解決済み] WindowsからLinuxへのscpにputtyを使用する
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド
-
[解決済み] CSVファイルを指定した行数で分割するには?