ファイルの最初の行から最初の2つの列を削除します。

ファイルの最初の行から最初の2つの列を削除します。

ファイルの最初の行から最初の2つの列を削除するコマンドを探しています。列の区切り記号はパイプです。列の数はさまざまです。

最初の2列だけ盲目的に削除するだけです。以下の例

入力:列1 |列3 |

出力列3 |

答え1

おそらく最も簡単なコマンドは次のとおりです。

sed '1s/^[^|]*|[^|]*|//g' input > output

このsedコマンドは1号線のみ交換してください。

この入力の場合:

foo|bar|baz|doo|bee|doo
123|456
789|101|112

次の出力が生成されます。

baz|doo|bee|doo
123|456
789|101|112

答え2

このコマンドを試してください。

head -2 inputFile.txt | cut -d "|" -f 3- > outputFile.txt

答え3

あなたが何を言っているのかを推測すると、cutコマンドはそれを行います。

echo "foo|bar|baz" | cut -d"|" -f3

したがって、最初の行だけを編集するには、headコマンドを使用することもできます。

head -n1 filename | cut -d"|" -f3

sedを使用して操作を実行することもできます。

head -n1 filename | sed 's/^.*|.*|//g'

答え4

これにより、ライン1からパイプで区切られた最初の2つのフィールドが切り捨てられ、ファイルの残りの部分(ライン2以降)は変更なしでコピーされます。

(head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input) > output

やや効率的ですが、構文的に厳しいアプローチは次のとおりです。

{ head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input; } > output

関連情報