简体   繁体   中英

How to delete first N lines in a file and retain the remaining lines using bash

I'm trying to delete first blocks in a file using sed, and retain the remaining last lines and save it into a file. However, the last lines of the file were not saved.

I used this code to delete the first 15 lines:

sed '1,15d' local_accounts.txt > remaining_accounts.txt

However, the last lines were also deleted.

local_accounts.txt

dn: uid=Nemuadmin,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: Nemuadmin
uid: Nemuadmin
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10001
gidNumber: 557
homeDirectory: /home/Nemuadmin
loginShell: /bin/bash
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

dn: uid=toosa,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: toosa
uid: toosa
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10000
gidNumber: 400
homeDirectory: /home/toosa
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

dn: uid=test_user1,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user1
uid: test_user1
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10200
gidNumber: 10200
homeDirectory: /home/test_user1
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

dn: uid=test_user2,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user2
uid: test_user2
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 20000
gidNumber: 20000
homeDirectory: /home/test_user2
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

dn: uid=test_user3,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user3
uid: test_user3
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 30000
gidNumber: 30000
homeDirectory: /home/test_user3
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

dn: cn=test_group1,ou=Group,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecGroup
objectClass: posixGroup
objectClass: groupOfNames
objectClass: FSSecAccessControl
objectClass: extensibleObject
cn: test_group1
gidNumber: 10200
member: uid=test_user1,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
memberUid: test_user1

dn: cn=test_group2,ou=Group,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecGroup
objectClass: posixGroup
objectClass: groupOfNames
objectClass: FSSecAccessControl
objectClass: extensibleObject
cn: test_group2
gidNumber: 20000
member: uid=test_user2,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
memberUid: test_user2

dn: cn=test_group3,ou=Group,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecGroup
objectClass: posixGroup
objectClass: groupOfNames
objectClass: FSSecAccessControl
objectClass: extensibleObject
cn: test_group3
gidNumber: 30000
member: uid=test_user3,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
memberUid: test_user3
dn: fssecPermissionId=PAMCLI,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
fssecAssignedGroupRoleRef: _oms_sudoer_ptally
fssecPermissionCLICommand: /sbin/pam_tally2
objectClass: FSSecPermission
objectClass: FSSecCLIPermission

dn: fssecPermissionId=perm1,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecPermission

dn: fssecPermissionId=perm2,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecPermission

dn: fssecPermissionId=perm3,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecPermission

After executing the sed command:

remaining_accounts.txt

dn: uid=toosa,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: toosa
uid: toosa
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10000
gidNumber: 400
homeDirectory: /home/toosa
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

dn: uid=test_user1,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user1
uid: test_user1
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10200
gidNumber: 10200
homeDirectory: /home/test_user1
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

dn: uid=test_user2,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user2
uid: test_user2
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 20000
gidNumber: 20000
homeDirectory: /home/test_user2
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

dn: uid=test_user3,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user3
uid: test_user3
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 30000
gidNumber: 30000
homeDirectory: /home/test_user3
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0

How will I delete the first block and retain the other blocks? Thank you in advance.

A light alternative could be to use tail , you could do something like:

tail -n +15 local_accounts.txt > remaining_accounts.txt

The -n +15 means to start from line 15.

This will leave untouched file local_accounts.txt and create remaining_accounts.txt with the same contents of local_accounts.txt but just from line 15.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM